如何编写匹配相邻行按序出现aaa、bbb的Regex多行模式
匹配方案
正则表达式写法
开启多行匹配模式(让^、$可以匹配每一行的行首、行尾)后,使用如下正则即可精准匹配需求:
^.*aaa.*\R.*bbb.*$
规则说明
^匹配包含aaa的行的行首.*aaa.*匹配整行中任意位置带有aaa的全部内容\R匹配跨系统的换行符(兼容Unix的\n、Windows的\r\n),确保aaa和bbb分属紧邻的两行.*bbb.*匹配下一行中任意位置带有bbb的全部内容$匹配包含bbb的行的行尾
命令行工具实现示例(以grep为例)
如果是在终端直接处理文本,可以用更简便的grep命令,无需手动编写多行正则:
grep -A 1 "aaa" test.txt | grep -B 1 "bbb" | grep -v "^--$"
参数说明:
-A 1匹配到aaa后额外输出后续1行内容-B 1匹配到bbb前额外输出前面1行内容- 末尾的
grep -v "^--$"用于过滤grep默认输出的分组分隔线
使用你提供的测试文本执行上述方案,最终只会输出预期的紧邻两行结果:
11 aaa blah blah bbb blah blah
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

