gpt4 book ai didi

regex - 正则表达式匹配以 y 或 z 结尾的单词,但不能同时匹配

转载 作者:行者123 更新时间:2023-12-01 07:41:46 25 4
gpt4 key购买 nike

我正在寻找一个正则表达式,它匹配以 y 或 z 结尾的单词,但不能同时匹配。

这里有一些测试用例:

fez day fyyyz fyyzy
  • 匹配 fez
  • 匹配 day
  • 不匹配 fyyyz,因为它以 yz
  • 结尾
  • 不匹配 fyyzy,因为它以 zy
  • 结尾

我正在尝试这个正则表达式,但它不起作用。

[yz\b]

我使用的正则表达式工具是 - http://www.regexr.com/

最佳答案

你可以使用

\b\w*[yz]\b(?<!yz)

或 - 如果单词不能以 yz 结尾或 zy :

\b\w*[yz]\b(?<!yz|zy)

它匹配任何以 y 结尾的单词或 z ,但不是 yyz (或以 (?<!yz|zy) 结尾,而不是以 yzzy 结尾的那些)。

regex demo

请注意 \b方括号内不是单词边界,而是退格匹配转义序列。

图案细节

  • \b - 引导词边界
  • \w* - 0+ 个单词字符(字母、数字或 _ ,可以调整为仅匹配带有 [^\W\d_]* 的字母)
  • [yz] - 一个 yz
  • \b - 尾随词边界
  • (?<!yz) - 如果存在 yz,则匹配失败的负向后查找当前位置之前的字符序列。

编辑:现在,所有的 Perl、Python 和 Java 标记都被删除了,它也可能会吸引那些想在 VBA、C++ std::regex 中使用正则表达式的人的注意。 (其默认风格是 ECMAScript5)或 JavaScript,其正则表达式引擎(ECMA-5 标准)不支持后视,但支持前瞻。 p>

你可以使用

/\b(?!\w*(?:yz|zy)\b)\w*[yz]\b/

regex demo .

详情:

  • \b - 引导词边界
  • (?!\w*(?:yz|zy)\b) - 在找到单词边界后立即执行的负前瞻,如果在 0+ 个单词字符之后,存在 yz,则匹配失败或 zy后跟单词边界
  • \w* - 消耗 0+ 字字符
  • [yz] - yz
  • \b - 尾随词边界。

关于regex - 正则表达式匹配以 y 或 z 结尾的单词,但不能同时匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44551984/

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