Regex 如何联合2正则表达式?

Regex 如何联合2正则表达式?,regex,grep,Regex,Grep,我有两个正则表达式: 1) egrep\\\.$/lab1.txt-返回以点结尾的行 2) egrep'^\w+[aeiou]\b'/lab1.txt-返回第一个单词以元音结尾的行 我需要加入这个表达式。所以,我需要返回以点结尾的行,其中第一个单词以元音结尾。我该怎么做 我的演示txt文件(lab1.txt): 因此,最终表达式应返回: Hello world. Oslo is the capital of Norway. 不要合并正则表达式。通过管道将一次调用的egrep输出传输到另一次调用

我有两个正则表达式:

1)
egrep\\\.$
/lab1.txt-返回以点结尾的行

2)
egrep'^\w+[aeiou]\b'
/lab1.txt-返回第一个单词以元音结尾的行

我需要加入这个表达式。所以,我需要返回以点结尾的行,其中第一个单词以元音结尾。我该怎么做

我的演示txt文件(lab1.txt):

因此,最终表达式应返回:

Hello world.
Oslo is the capital of Norway.

不要合并正则表达式。通过管道将一次调用的
egrep
输出传输到另一次调用的
egrep

egrep '\.$' ./lab1.txt | egrep '^\w+[aeiou]\b'

回答原问题:

您可以使用前瞻性断言:

  • 匹配任何行(
    ^.*?$
  • 匹配以点结尾的任何行(
    ^..\.$
  • 但前提是它前面有一个单词wovel:
    (?=^\w+[aeiou]\b)^.*.\.$
总而言之:

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


(需要多行模式,如果整个输入是单个字符串,则不确定egrep是否按行工作,但会假定它。)

为什么不使用
^\w+[aeiou]\b.*.\.$
?谢谢,如果可以用单个表达式求解,则没有理由运行它两次<代码>^\w+[aeiou]\b.*.$确保有理由运行它两次。如果将其表示为两个不同的正则表达式更为清晰,那么这就是这样做的一个完全合理的理由。
(?=^\w+[aeiou]\b)^.*?\.$