Как объединить 2 выражения регулярных выражений? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть два выражения регулярного выражения:

1) egrep \\.$. / Lab1.txt - возвращает строки, заканчивающиеся точкой

2) egrep '^\w+[aeiou]\b' ./lab1.txt - возвращает строки, в которых первое слово заканчивается гласной

Мне нужно присоединиться к этим выражениям. Итак, мне нужно вернуть строки, заканчивающиеся точкой И, где первое слово заканчивается гласной. Как я могу это сделать?

Мой демонстрационный текстовый файл (lab1.txt):

Hello world
Hello world.
London is the capital of GB.
Oslo is the capital of Norway
Oslo is the capital of Norway.

Итак, окончательное выражение должно вернуть:

Hello world.
Oslo is the capital of Norway.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Чтобы ответить на оригинальный вопрос:

Вы можете использовать опровержение-утверждение:

  • Соответствует любой строке (^.*?$)
  • Соответствует любой строке, заканчивающейся точкой (^.*?\.$)
  • но только если ему предшествует первое слово wovel: (?=^\w+[aeiou]\b)^.*?\.$

Все вместе:

(?=^\w+[aeiou]\b)^.*?\.$

Regular expression visualization

Демо Debuggex

(требуется многострочный режим, если весь ввод представляет собой одну строку, не уверен, что egrep работает по строкам, но предположил бы это.)

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

Не объединяйте регулярные выражения. Передайте вывод из одного вызова egrep в другой вызов egrep.

egrep '\.$' ./lab1.txt | egrep '^\w+[aeiou]\b'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...