Нужна помощь с regular expression
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Нужна помощь с regular expression
Кто-нибудь знает как я могу переименовать файл bla.bla.1.2.3.4 в бла бла 1.2.3.4. Иначе говоря избавится от точки между словами и перед цифрами, но не трогать ее между цифрами. Моих жалких потуг понять regular expression на это не хватает.
Заранее благодарен.
Заранее благодарен.
Тоже желательна помощь с 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, где позиции для точек-разделителей были бы как-то взаимозависимы? Если да, то с помощью каких операторов/методов это можно осуществить?
Вопрос не срочный. Мне это нужно для собственного понимания.
Пытаюсь составить шаблон поиска файлов с названием типа:
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, где позиции для точек-разделителей были бы как-то взаимозависимы? Если да, то с помощью каких операторов/методов это можно осуществить?
Вопрос не срочный. Мне это нужно для собственного понимания.
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.
Тут 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) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.