gpt4 book ai didi

regex - 使用点匹配所有模式的正则表达式

转载 作者:行者123 更新时间:2023-12-02 07:49:57 25 4
gpt4 key购买 nike

通常 . 不匹配换行符,除非我使用 (?s) 标志指定引擎这样做。我使用 Perl 样式正则表达式模式在我的编辑器 (UltraEdit v14.10) 正则表达式引擎上尝试了这个正则表达式:

(?s).*i

搜索文本包含多行,每行包含多个“i”字符。

我希望上面的正则表达式意味着:搜索尽可能多的字符(因为使用 '?s' . 现在匹配任何内容,包括换行符)(因为对 *) 的贪婪直到到达字符“i”。

这应该是指“从第一个字符到last sentence 的最后一个'i'”(贪心应该到最后一句,对吧?)。

但是用UltraEdit的测试,结果是“第一个包含i的句子中从第一个字符到最后一个'i'”。这个结果正确吗?我对 reg 表达式的解释有误吗?

例如给定这段文字

aaa
bbb
aiaiaiaiaa
bbbicicid

aaa
bbb
aiaiaiai

匹配。但我希望:

aaa
bbb
aiaiaiaiaa
bbbicici

最佳答案

您的正则表达式是正确的,您对其性能的期望也是如此。

这是 UltraEdit 的正则表达式实现中一个众所周知的错误,我已经多次写过它来支持它。据我所知,它仍然没有修复。问题似乎在于 UE 的正则表达式实现基本上是基于行的,只有在必要时才会将额外的行带入匹配中。所以 .* 将贪婪地匹配当前行,但如果不是为了实现匹配,它不会跨越换行符边界。

还有一些其他带有行尾的细微错误。例如,lookbehind 也不适用于换行符。

写入 IDM 支持,或更改为具有良好正则表达式支持的编辑器。我都做了。

关于regex - 使用点匹配所有模式的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4348332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com