李恒道 发表于 2023-10-3 21:21:51

正则表达式 非贪婪匹配不是最短匹配

比如 我爱你,你爱我,我爱你,蜜雪冰城甜蜜蜜
我们需要匹配【我爱你,蜜雪冰城甜蜜蜜】
如果写【`我爱你.*?蜜雪冰城甜蜜蜜`】
会匹配全部段落
因为即使是非贪婪匹配,依然会从最开始逐渐查找符合标准的段落
然后再以此向后匹配
想要保证最短的【我爱你,蜜雪冰城甜蜜蜜】,就需要在.重复查找的时候
确保其中不包含我爱你的关键字,这个时候就需要使用环视
使用正则`我爱你(.(?!我爱你))*?蜜雪冰城甜蜜蜜`
达成!

王一之 发表于 2023-10-3 22:49:27

?! 是什么?还有些什么的乱七八糟的,是什么意思呢?

李恒道 发表于 2023-10-3 23:37:16

王一之 发表于 2023-10-3 22:49
?! 是什么?还有些什么的乱七八糟的,是什么意思呢?

反向负零宽度断言
https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=2339

李恒道 发表于 2023-10-3 23:52:47

王一之 发表于 2023-10-3 22:49
?! 是什么?还有些什么的乱七八糟的,是什么意思呢?

比如123-123-456-789
哥哥要匹配123-456,而不是123-123-456
该怎么匹配?
非贪婪解决不了这个问题的
只能靠断言

steven026 发表于 2023-10-4 00:11:25

本帖最后由 steven026 于 2023-10-4 00:17 编辑

GGNB!

李恒道 发表于 2023-10-4 00:24:08

steven026 发表于 2023-10-4 00:11
GGNB!

我看到了你发什么
太太
你也不想让别人知道吧

airbeyond 发表于 2023-10-8 08:32:57

!(data/attachment/forum/202310/08/083255o3birzpr84ra3bjl.png)

李恒道 发表于 2023-10-8 12:09:37

airbeyond 发表于 2023-10-8 08:32
!(data/attachment/forum/202310/08/083255o3birzpr84ra3bjl.png)

这玩应真的复杂{:4_115:}
页: [1]
查看完整版本: 正则表达式 非贪婪匹配不是最短匹配