gpt4 book ai didi

python - 用python的正则表达式匹配多组字符

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:12 24 4
gpt4 key购买 nike

作为一些词形还原规则的一部分,我试图形成一个正则表达式来匹配以“ses”、“zes”、“xes”、“ches”或“shes”结尾的字符串,但我遇到了困难让字母分组正确。我认为以下会起作用...

re.fullmatch(r'.*[szx(ch)(sh)]es\b', infl)

但我看到这将匹配 'ces' 或 'hes 词尾,我只希望它匹配 'ches' 词尾(与 (sh) 分组相同)。我一定误解了如何正确地“或”组合在一起。每当我在一组组周围加上括号时,我都会匹配其中的所有字母,而不仅仅是字母组合。

如何修改 fullmatch 表达式以使其正常工作?我一定是误解了组合分组的工作方式,因此在这种情况下对此进行简短解释也会有所帮助。

顺便说一句...我只需要一个真/假的返回。我对返回值不感兴趣。

一些匹配示例是:dismisses、waltzes、indexes、detaches、distincees。

最佳答案

即使在 Java 中,您的正则表达式也无法正常工作,因为字符类中不支持分组。 () 被视为 [...] 中的文字括号。

fullmatch 需要完整的字符串匹配,如果您不关心开头的内容,只需使用 re.search 并将模式锚定在末尾。

使用

re.search(r'(?:[zx]|ch|sh?)es$', s)

参见 regex demo和一个 Regulex graph :

enter image description here

详情

  • (?:[zx]|ch|sh?) - non-capturing group匹配任何一个
    • [zx] - zx
    • | - 或者
    • ch - ch 字符序列
    • | - 或
    • sh? - ssh
  • es - es 子串
  • $ - 字符串结尾。

关于python - 用python的正则表达式匹配多组字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747233/

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