Совпадение регулярных выражений с возвратами каретки в Python - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть следующие данные, и я хочу сопоставить определенные строки, как указано ниже.

FTUS80 KWBC 081454 AAA\r\r TAF AMD   #should match 'AAA'
LTUS41 KCTP 082111 RR3\r\r TMLLNS\r  #should match 'RR3' and 'TMLLNS'
SRUS55 KSLC 082010\r\r HM5SLC\r\r    #should match 'HM5SLC'
SRUS55 KSLC 082010\r\r SIGC  \r\r    #should match 'SIGC  ' including whitespace

Мне нужны следующие условия. Но это не работает, когда я собираю все это вместе, поэтому я знаю, что у меня есть ошибки. Заранее спасибо.

  • Начать совпадение после 6-значной строки: (? <= \ D {6}) </li>
  • совпадать, если 3 символа в верхнем регистре / цифрах и до первых 2 возвратов каретки: ([A-Z0-9] {3}) (? = \ R)
  • совпадают, если после возврата каретки 6 символов смешаны в верхнем регистре / цифрах: (? <= \ R \ r [A-Z0-9] {6}) </li>
  • совпадать, если 4 символа и два пробела: ([A-Z0-9] {4})

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

Возможно, есть более элегантный способ, но вы можете сделать что-то вроде следующего:

(?:\d{6}\s?)([A-Z\d]{3})?(?:[\r\n]{2}\s)([A-Z\d]{6}|[A-Z\d]{4}\s{2})?
  • (?:\d{6}\s?) группа из 6 цифр без захвата, за которой следует дополнительный пробел
  • ([A-Z\d]{3})? необязательная группа захвата из 3 заглавных букв / цифр
  • (?:[\r\n]{2}\s) необработанная группа захвата из двух концов строк, за которыми следует 1 пробел
  • ([A-Z\d]{6}|[A-Z\d]{4}\s{2})? необязательная группа захвата из 6 заглавных буквбуквы / цифры ИЛИ 4 заглавные буквы / цифры, за которыми следуют 2 пробела
0 голосов
/ 18 апреля 2019

Непонятно, каков конец строки здесь, но при условии, что это Unix one \n, следующее выражение захватывает строки по запросу (двойные кавычки добавлены, чтобы показать пробел)

sed -rne 's/^.{18} ?([A-Z0-9]{3,3})?\r{2}?([^\r]+)?\r.*$/"\1\2"/p' text.txt

Результат

"AAA"
"RR3 TMLLNS"
" HM5SLC"
" SIGC  "
  • .{18} первые 18 символов
  • ?([A-Z0-9]{3,3})? соответствует AAA или RR3 без пробела
  • \r{2}?([^\r]+)?\r соответствует TMLLNS, HM5SLC или SIGC с предшествующим 2 \r и последующим 1 \r символами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...