背景:我正在尝试过滤一些日志,但我无法更改它们生成的方式。它们的格式基本上如下:
Some text here AAA
Some text here One
Some More text here
******
Some text here BBB
Some text here Two
Some More text here
******
Some text here CCC
Some text here Three
Some More text here
******
Some text here BBB
Some text here Four
Some More text here
******
Some text here BBB
Some text here Five
Some More text here
******
基本上,每个
******
都界定了一个新的日志事件。我正在尝试使用正则表达式匹配位于两个
******
之间并包含例如BBB
的每个块。 (我知道第一个不以******
开头,但是出于复杂性考虑,我可以不匹配它)我尝试的方法基本上是“定义一个由
******
界定但中间没有另一个******
的潜在匹配项”,但我不知道如何编写。 因此,在上述示例中,它将匹配包含Two、Four和Five的块。我尝试了多种变体,例如:
\*{6}(?!\*{6}).*BBB.*\*{6}
有什么建议吗?
编辑:我正在使用Notepad ++ / VisualStudio和Regex101.com中的PCRE(php)版本的正则表达式。
^[^*]+\bB{3}\b[^*]+$
是你真正要寻找的。 - Onyambu