View previous topic :: View next topic |
Author |
Message |
Tis Sedo
Joined: 27 Nov 2005 Posts: 7
|
(Separately) Posted: Wed Aug 01, 2007 19:52 Post subject: Нужна помощь с regular expression |
|
|
Кто-нибудь знает как я могу переименовать файл bla.bla.1.2.3.4 в бла бла 1.2.3.4. Иначе говоря избавится от точки между словами и перед цифрами, но не трогать ее между цифрами. Моих жалких потуг понять regular expression на это не хватает.
Заранее благодарен. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
Tis Sedo
Joined: 27 Nov 2005 Posts: 7
|
(Separately) Posted: Wed Aug 01, 2007 20:37 Post subject: |
|
|
Alextp спасибо за быстрый ответ, но наверное я полный идиот - у меня твоя формула не работает, может быть потому, что я не совсем понял про скобки. Можешь написать что конкретно я должен написать в "Search for" и "Replace with". Извини, еще раз спасибо за ответ. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
Tis Sedo
Joined: 27 Nov 2005 Posts: 7
|
(Separately) Posted: Wed Aug 01, 2007 21:29 Post subject: |
|
|
Спасибо, РАБОТАЕТ но только для 2 слов, я понял как сделать для 3,4 слов и более. Но нет ли идеи о более независимой от количества слов формуле? Еще раз спасибо |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Wed Aug 01, 2007 21:36 Post subject: |
|
|
Tis Sedo wrote: | я понял как сделать для 3,4 слов и более. Но нет ли идеи о более независимой от количества слов формуле? Еще раз спасибо |
Есть: заменяем все точки, которые следуют после букв, на пробелы:
Search for: ([a-z])\.
replace with: "$1 " (без кавычек, пробел в конце!) _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
|
Tis Sedo
Joined: 27 Nov 2005 Posts: 7
|
(Separately) Posted: Wed Aug 01, 2007 23:47 Post subject: |
|
|
Спасибо большое,
Все работает замечательно. |
|
Back to top |
|
|
zoverg
Joined: 17 Mar 2013 Posts: 4
|
(Separately) Posted: Sat Nov 21, 2015 04:05 Post subject: |
|
|
Тоже желательна помощь с regexp. Впервые заморочиваюсь ими в TC и помимо этого опыт с ними у меня крайне скудный.
Пытаюсь составить шаблон поиска файлов с названием типа:
2011.05.14_14.15.18___104_8634
2014.03.29_14.00.20___DSC04783
чтобы найти файлы, где в дате и/или времени по ошибке в качестве разделителя стоит не точка, а любой другой символ (например, "," или "-") в любом из 4-х мест и ошибок может быть как одна, так и 2, 3, 4.
Мои потуги встали в тупик ещё на таком варианте:
(\d{4})[^\.](\d{2})[^\.](\d{2})_(\d{2})[^\.](\d{2})[^\.](\d{2})
Но разумеется такой шаблон не подходит - он найдёт только файлы с ошибками во всех четырёх местах одновременно, а перебирать все комбинации 1-4 ошибок в любом из 4-х мест, сами понимаете, накладно.
А такая конструкция и вовсе не работает никак (разнесено на несколько строк для наглядности), видимо понимание синтаксиса у меня совсем плохое:
(((\d{4})[^\.](\d{2})\.(\d{2})_(\d{2})\.(\d{2})\.(\d{2}))|
((\d{4})\.(\d{2})[^\.](\d{2})_(\d{2})\.(\d{2})\.(\d{2}))|
((\d{4})\.(\d{2})\.(\d{2})_(\d{2})[^\.](\d{2})\.(\d{2}))|
((\d{4})\.(\d{2})\.(\d{2})_(\d{2})\.(\d{2})[^\.](\d{2})))
Но даже если бы работала, то нашла бы файлы только с одной ошибкой, хоть и в любом месте.
Возможно ли составить конструкцию данным инструментом в его реализации TC, где позиции для точек-разделителей были бы как-то взаимозависимы? Если да, то с помощью каких операторов/методов это можно осуществить?
Вопрос не срочный. Мне это нужно для собственного понимания. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Nov 21, 2015 11:02 Post subject: |
|
|
zoverg
Тут 15 подходящих комбинаций. Скобки нужны только при заменах или перечислении вариантов внутри выражения. Поэтому тут при поиске они лишние.
Единственный вариант, который я вижу правильным - это искать файлы с любым символом по точке: ^\d{4}.\d{2}.\d{2}_\d{2}.\d{2}.\d{2}.+
После вывода на панель нажать Num+ и вставить: <^\d{4}\.\d{2}\.\d{2}_\d{2}\.\d{2}\..+
Нажать Enter и * (инвертация). Всё, можно работать с проблемными именами.
Если же нужно просто произвести замену на точки, то Num+ вообще не нужен, можно выделить и всё по Ctrl+A, вызвать ИГП, отметить только "Рег. выраж.".
Найти: ^(\d{4}).(\d{2}).(\d{2}_\d{2}).(\d{2}).(.+)
Заменить: $1.$2.$3.$4.$5
Enter. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
zoverg
Joined: 17 Mar 2013 Posts: 4
|
(Separately) Posted: Sat Nov 21, 2015 19:33 Post subject: |
|
|
Flasher, спасибо за помощь.) |
|
Back to top |
|
|
|