Регулярное выражение для удаления нескольких сегментов в именах файлов - PullRequest
0 голосов
/ 14 октября 2018

У меня есть несколько файлов для переименования.Я переименую их, используя программное обеспечение пакетного переименования.Это может удалить образцы, используя регулярное выражение.Вот два примера с именами файлов:

  • 13 (a 3f kd) kjhucj 1 _ m (52 min) - jrhkfq 324
  • 647 fjk3 d [63h hh] _ (jhgbh) abim (238 min)

Я хочу удалить все символы после _\s, но сохранить\(\d+\smin\) часть.Я хочу, чтобы они были переименованы в:

  • 13 (a 3f kd) kjhucj 1 (52 min)
  • 647 fjk3 d [63h hh] (238 min)

Я пытался _\s.*[^(\(\d+\smin\))], но получил странные результаты.Я не знаю, возможно ли это вообще.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

То, что вы действительно пытаетесь сделать, это удалить все между _\s и (, а также все после ).Кроме того, вы хотите сохранить все до _\s и от ( до ).Вы должны стремиться определять разделители ваших групп захвата, а не их содержимое большую часть времени:

(.+?)_\s.*(\(\d+ min\)).*

В этом случае вместо удаления сохраняйте только содержимое групп захвата 1 и 2.Многие инструменты позволят вам сказать что-то вроде \1\2 в шаблоне замены.

Если ваш инструмент удаляет все совпадения и вы настаиваете на том, чтобы делать это таким образом, вам придется использовать двухпроходный подход, так какУ вас есть два отключенных региона для удаления.Для этого потребуется инструмент, который поддерживает прогнозирование и просмотр сзади, как это делает большинство из них.

При первом проходе будет использоваться

_\s.*(?=\(\d+ min\))

При втором проходе будет удалено

(?<=\(\d+ min\)).*
0 голосов
/ 14 октября 2018

Квадратные скобки - это специальные символы в регулярных выражениях: когда вы помещаете группу символов между [ и ], они интерпретируются как соответствующие любому одному символу в коллекции.Тем не менее, здесь вы, кажется, хотите соответствовать реальному [ персонажу.Вы можете сделать [ не особенным , поставив перед ним обратную косую черту, поэтому попробуйте заменить [ в регулярных выражениях на \[ и посмотрите, поможет ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...