我一直在努力寻找答案。虽然我正在使用C ++ boost正则表达式,但如果我只有一个工作表达式,我可以适应它(虽然我会非常感激地接受一个特定于提升的线索)。
我有以下示例文本:
----
this is a sample line -> various chars
another sample line (again 'might have different chars]
etc., etc.
----
more data
again anything in here.
more lines of text -> etc
etc. etc.
----
maybe only one line
和尾随的“----”是可选的。
我试过了:
^-{4}\s(.*\s)*?(-{4})+
和变化,但我只得到我的组2中的最后一行,而我想要所有的行 跟随第2组中的4' - '字符,除非它是以4' - '字符开头的另一行。
答案 0 :(得分:0)
量化捕获组仅捕获最后一个实例。使该组不捕获,并将整个量化表达式包装到捕获组中。
^-{4}\s((?:.*\s)*?)(-{4})+
^ ^^ ^
另外,我不确定(-{4})+
的目的是什么。你的意思可能是:
^-{4}\s((?:.*\s)*?)(?=-{4}|\s*$)
^^^^^^^^^^^^^
(?= ... )
是一个先行断言。它声称紧跟当前位置后是-{4}
或文本的结尾(在可能的空格之后)。
最后,您可能想要进行一次调整......
^-{4}\s+((?:.*\s+)*?)(?=-{4}|\s*$)
^ ^
...如果您的文字之间有空行。