我一直在绞尽脑汁地解决我目前遇到的一个特定的正则表达式问题。
我想匹配可能跨越多行的值。 如果数据跨越多行,它将以空格而不是下划线“_”结尾,但该行中可能存在有效文本,在“This _is”之前有一个空格和下划线。
请参阅以下文本示例:
This is d_ata 1
_This is _
data 2
This _is data 3a
This _
is _
data 4
结果如下
匹配 1
This is d_ata 1
比赛 2
_This is _
data 2
比赛3
This _is data 3a
第 4 场比赛
This _
is _
data 4
我不关心内容匹配,只是确保获得正确的行尾匹配。
Edit: See Robby's negative look behind solution below.
Had tried it with some additional logic earlier which turned out to be to complicated for my regex provider to handle, simplified it and it worked a treat.
最佳答案
此 PCRE 表达式应提供所需的结果:
/^.*?(?<! _)$/gms
这是使用负向回顾 (?<! _)
与多行标志 ( m
) 结合使用,以匹配前面没有 _
的行结束符。单行标志 ( s
) 确保点也匹配换行符。
这是一个regex101 example .
关于正则表达式 - 匹配不以字符结尾的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43132833/