Regex 如何联合2正则表达式?
我有两个正则表达式: 1)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输出传输到另一次调用
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)^.*?\.$