gpt4 book ai didi

php - PCRE 中的负前瞻和负后视以及多个字符

转载 作者:行者123 更新时间:2023-12-04 14:34:47 25 4
gpt4 key购买 nike

我有以下文字:

aabbaa
aa bbc aa

bbg

aa bbd aa

我想找到 以 bb 开头且 不在 aa 和 aa 之间 的单词,而不管使用 PCRE 的匹配单词之前或之后的空格。在上面的例子中,只有 bbg 应该被匹配。

我创建了以下模式:

(?<!aa)bb(\w)*(?!aa)

但是只有 aabbaa 不匹配,其他匹配。我不知道如何使用 \s* 在负面前瞻/后视中获得所需的结果。似乎不能简单地使用:

(?<!aa\s*)bb(\w)*(?!\s*aa)

如何实现?

最佳答案

(*SKIP)(*F) 魔术(无需前瞻)

使用这个:

(\baa\b).*?\1(*SKIP)(*F)|\bbb\w+\b

查看 the demo 中的匹配项.

这个问题是这个问题中解释的技术的经典案例 "regex-match a pattern, excluding..."

交替的左侧 | 匹配完整的 aa ... aa 字符串然后故意失败,之后引擎跳到字符串中的下一个位置。右侧匹配您想要的 bb... 单词,我们知道它们是正确的,因为它们与左侧的表达式不匹配。

引用

关于php - PCRE 中的负前瞻和负后视以及多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24653181/

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