使用python匹配多组字符';s正则表达式

使用python匹配多组字符';s正则表达式,python,regex,Python,Regex,作为一些柠檬化规则的一部分,我正在尝试形成一个正则表达式,它将匹配以“ses”、“zes”、“xes”、“ches”或“shes”结尾的字符串,我很难正确地获得字母分组。我想下面的方法会有用的 re.fullmatch(r'.*[szx(ch)(sh)]es\b', infl) 但我发现这将匹配“ces”或“hes”词尾,我只希望它匹配“ches”词尾(对于(sh)分组也是如此)。我一定是误解了如何正确地“或”组合群体。每当我在一组字母周围放上括号时,我会匹配里面的所有字母,而不仅仅是字母组合

作为一些柠檬化规则的一部分,我正在尝试形成一个正则表达式,它将匹配以“ses”、“zes”、“xes”、“ches”或“shes”结尾的字符串,我很难正确地获得字母分组。我想下面的方法会有用的

re.fullmatch(r'.*[szx(ch)(sh)]es\b', infl)
但我发现这将匹配“ces”或“hes”词尾,我只希望它匹配“ches”词尾(对于(sh)分组也是如此)。我一定是误解了如何正确地“或”组合群体。每当我在一组字母周围放上括号时,我会匹配里面的所有字母,而不仅仅是字母组合

如何改革
fullmatch
表达式以正确工作?我一定是误解了组合分组是如何工作的,所以在这种情况下,简短的解释也会有所帮助

顺便说一句。。。我只需要一份真/假报税表。我对返回的值不感兴趣


一些匹配的示例有:dismisse、waltze、index、detaches、discrimites。

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

fullmatch
需要一个完整的字符串匹配,如果您不在乎开始时是什么,只需使用
re.search
并在结尾锚定模式

使用

见附录a和a:

详细信息

  • (?:[zx]| ch | sh?
    -匹配以下任一项的
    • [zx]
      -
      z
      x
    • |
      -或
    • ch
      -
      ch
      char序列
    • |
      -或
    • sh?
      -
      s
      sh
  • es
    -
    es
    子字符串
  • $
    -字符串结束

为什么?:此处不需要记住符号?@srknzl在匹配后不需要访问组值时,最好使用非捕获组。此规则不应将字符串与“ess”匹配“最后。这是一个不同的柠檬化规则。我能问一下python和JavaScript正则表达式是否使用相同的语法吗?在regulex图形站点的顶部显示JavaScript正则表达式可视化工具。是python的吗?Thanks@srknzl这些是不同的正则表达式引擎,但这种模式在两种语言中的工作方式是相同的。
re.search(r'(?:[zx]|ch|sh?)es$', s)