2017-01-31 6 views
1

Мне нужно регулярное выражение для поиска в текстовом файле и поиск каждой строки, начинающейся с «CD», когда предыдущая строка НЕ ​​начинается с «CR».регулярное выражение, сравнивающее запись с предыдущей записью

В приведенных ниже примерах обратите внимание на конец, где есть строки CD, которые не имеют предшествующей записи CR. Мне нужен мой поиск, чтобы найти эти строки CD.

HDPM0021535 11ABC CO. D 
CRVA MC OP-MATHER CA 1053 
CD1010 BD5275555 
TR+00000001+00000000+0000024760 
HDPM0021535 11ABC CO. D 
CROMNICARE RENO 48308 9475 
CD3055 BO9182000 
CROCR OF SANTA ROSA 48218 879 
CD3055 BC9832555 
TR+00000002+00000000+0000000695 
HDPM0021535 11ABC CO. D 
CD2037 AF7944888 
CD2037 AF7944888 
TR+00000002+00000001-0000000089 
TT+00000008+0000196660200 

Спасибо!

+0

На каком языке/среде? – revo

+0

Прямо сейчас я просто ищу текстовые файлы, используя опцию Regular Expression в Notepad ++ на машине под Windows 7. В конце концов, я создам отчет Oracle SQL, чтобы автоматически указывать их из базы данных. –

+0

Попробуйте '(?: \ G (?! ^) \ R? |^(?! CR). * \ R) \ KCD. *'. Не знаю, как поймать первую линию. –

ответ

0

Кажется, вы можете использовать

(?:\G\R?|^(?!CR).*\R)\KCD.* 

Детали:

  • (?:\G\R?|^(?!CR).*\R) - либо начало документа или в конце предыдущего успешного матча (\G) следует с дополнительным LineBreak (\R?) , или начало строки (^), за которой следуют CR ((?!CR)), за которыми следуют любые символы 0+, отличные от строки break ch АРС (.*), а затем с перерывом линии (\R)
  • \K - оператор сброса матч отделяемого текст согласованного до сих пор
  • CD.* - CD следуют с любыми 0+, кроме символов разрыва строки символов (. соответствует новой строки должен быть выключен)

enter image description here