正则表达式 - 匹配多个不以字符结尾的行

时间:2017-03-31 05:05:05

标签: regex multiline nsregularexpression

我一直在用我目前的特定正则表达式问题来绞尽脑汁。

我希望匹配可能跨越多行的值。 如果数据跨越多行,则它将作为空格而不是下划线“_”结束,但行中可能有一个有效的文本,其前面有一个空格和下划线“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

我不关心内容匹配,只是确保我得到正确的行匹配结束。

  

编辑:   请参阅Robby在以下解决方案背后的负面看法。

     

之前曾尝试过一些额外的逻辑,结果证明我的正则表达式提供程序要处理复杂,简化它并且它有效。

1 个答案:

答案 0 :(得分:2)

此PCRE表达式应提供所需的结果:

/^.*?(?<! _)$/gms

这使用负面后顾问(?<! _)与多线标记(m)结合使用,以匹配不在_之前的行尾。单行标志(s)确保点也匹配换行符。

这是regex101 example