Блокнот ++ и регулярные выражения (многострочный) - PullRequest
0 голосов
/ 23 сентября 2018

Я столкнулся с проблемой.У меня есть текстовый файл со следующим шаблоном:

SOME RANDOM TITLE IN CAPS (nnnn)
text text text
more text 
...
SOME OTHER RANDOM TITLE IN CAPS (nnnn)

Что точно я хочу извлечь, так это то, что я хочу извлечь строки со скобками и датой ex: (2015);(20008) После (nnnn) нет текста, иногда пробел и CR LF, иногда просто CR LF

Я хотел бы удалить все остальное и оставить только строку заголовка с квадратными скобками

Время, которое я потратил, я мог бы сделать это вручную (есть 100 строк), но мне нравится вызов:)

Я думал, что смогу найти проблему, но я застрял.

Я пробовал что-то в этом духе:

^.*\(\d\d\d\d\)(?s)(.*)(^.*\(\d\d\d\d\))

Но я не понимаю, чего хочу.Кажется, я не могу остановить (? S) (. *), Идущий до конца текста, вместо того, чтобы останавливаться при следующем появлении.

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Следующий RegEx сопоставляет 2 строки с квадратными скобками, содержащими 4 числа:

.*?\(\d{4}\)\s*

Он начинает сопоставлять что-либо в начале нуля или более раз (без жадности), затем соответствует стартовой скобке, за которой следуют 4 числа,Окончательно заканчивая пробел и новую строку.

0 голосов
/ 24 сентября 2018

Если вы хотите удалить все строки, кроме тех, которые заканчиваются на (4numbers), вы можете попробовать это:

^(?!.*\(\d{4}\)\h*$).*(?:\r?\n|\z)

Заменить на: (nothing)

См. демо

0 голосов
/ 23 сентября 2018

Я предлагаю использовать функцию Поиск> Отметить.Используйте шаблон типа \(\d{4}\) и отметьте опцию «Строка закладки», затем нажмите «Пометить все».Затем используйте Поиск> Закладка> Удалить неотмеченные строки.Это удалит все строки, кроме тех, которые соответствуют вашему шаблону.


Примечание: Если возможно иметь круглые скобки с 4 цифрами в других строках, вы можете добавить $ кконец выражения, чтобы убедиться, что шаблон соответствует только концу строки.Например, more text (1234) and other stuff будет соответствовать шаблону, который я дал выше, но если вы используете шаблон \(\d{4}\)$, он больше не будет совпадать.

Если вы хотите быть еще более конкретным с вашим шаблоном, ища эти строки столько заглавные буквы и пробелы, за которыми следуют круглые скобки с 4 цифрами внутри, где круглые скобки находятся в конце строки, тогда вы можете использовать такой шаблон: [A-Z ]+\(\d{4}\)$


Пример ввода:

SOME RANDOM TITLE IN CAPS (2008)
text text text
more text 
...
SOME OTHER RANDOM TITLE IN CAPS (2010)

Вот как пометить линии:

enter image description here

После нажатия «Пометить все» вы увидите следующее:

enter image description here

Теперь используйте Поиск> Закладка> Удалить неотмеченные строки, и вы получите это:

enter image description here

...