gpt4 book ai didi

javascript - 正则表达式匹配帮助: won't match on each appearence

转载 作者:行者123 更新时间:2023-12-01 03:10:28 27 4
gpt4 key购买 nike

我需要编写一个小的正则表达式匹配器,它将匹配任何出现的字符串形式

[a-zA-Z]+(_[a-zA-Z0-9]+)?

如果我使用上面的正则表达式,它会匹配所需的部分,但也会匹配到 4_abcabc 部分,这不是预期的。我尝试用以下方法排除它:

(?:[^a-zA-Z0-9_]|^)([a-zA-Z]+(_[a-zA-Z0-9]+)?)(?:[ ^a-zA-Z0-9_]|$)

问题是开头和结尾的“not”匹配并没有像我希望的那样真正起作用。如果我在示例中使用它们

a_d Dd_da 4_d d_4

他们会阻止匹配第二个 Dd_da,因为在第一个匹配中使用了空格。遗憾的是,我无法使用环视,因为我正在使用 JS。

所以输入:a_d Dd_da 4_d d_4

应匹配:a_dDd_dad_4

但匹配:a_d(末尾有一个空格)

是否有另一种方法来匹配所需的部分,或者不消耗“ anchor ”匹配?

非常感谢您的帮助。

最佳答案

您可以使用\b:

\b[a-zA-Z]+(_[a-zA-Z0-9]+)?\b

\b 匹配(零宽度)点,其中前一个字符或后一个字符是字母、数字或下划线,但不能同时是两者。如果第一个/最后一个字符是字母、数字或下划线,它还会与字符串的开头/结尾匹配。

关于javascript - 正则表达式匹配帮助: won't match on each appearence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888302/

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