【发布时间】:2014-03-06 22:06:23
【问题描述】:
我正在尝试匹配连续行,这些行以任意数量的空格开头,后跟字符|。我正在使用s 标志,以便. 匹配换行符。
到目前为止,我在| 之前使用有限数量的空格。
我在确定达到不符合要求的行的部分遇到问题。出于某种原因,\n\s*[^\|] 不能解决问题。我现在正在做的事情如下:
(?P<terminating>
\n( # when newline is encountered...
[^\|\s] # check if next character is not: (| or space)
|
[\s][^\|\s] # check if next characters are not: space + (| or space)
|
[\s][\s][^\|\s] # check if next characters are not: space + space + (| or space)... And so on....
)
|
$
)
这显然只适用于两个空格。我想让这项工作适用于任意数量的空间。我研究了递归,但在这种情况下,这似乎是一把很重的枪。现在是我的问题:为什么\n\s*[^\|] 不起作用,是否有另一种无需递归的方式解决此问题?
下面是一个输入示例以及我想要得到的匹配结果:
输入字符串:
Lorem ipsum dolor sit amet,
consectetur adipisicing
elit,
|sed do
|eiusmod tempor incididunt
|ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation
ullamco laboris nisi ut
aliquip ex ea commodo consequat.
输出是一个包含内容的字符串:
|sed do\n |eiusmod tempor incididunt\n |ut labore et dolore magna aliqua.
我不想要三个匹配,每行包含|。
【问题讨论】:
标签: regex recursive-regex