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

标签 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

我不关心内容匹配,只是确保获得正确的行尾匹配。

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/

相关文章:

regex - 如何在Perl中使用正则表达式解析多行HTML

android - 在 ConstraintLayout 中自动调整多行 TextView

带有条件模板的 iOS NSRegularExpression

JavaScript 简单正则表达式 - 限制字符串的第一个字符恰好为 '#'

python - 根据每个句子的第一个单词将 Pandas 数据框列中的字符串列表分解为新列

python - pandas.DataFrame. 替换为通配符

regex - Grep 模式与多行与操作

.net - 我将如何使用正则表达式将 HTML 解析为纯文本

ios - 通过正则表达式验证 IP 地址 - 未知转义序列

ios - 为什么我的 Swift 中的正则表达式无法编译?我该如何给它一个可变字符串呢?