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

2024-05-23 23:45:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

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

一些匹配的例子是:解散,华尔兹,索引,分离,区分


Tags: 方法字符串re规则sh结尾字母ses
1条回答
网友
1楼 · 发布于 2024-05-23 23:45:33

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

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

使用

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

regex demoRegulex graph

enter image description here

详细信息

  • (?:[zx]|ch|sh?)-anon-capturing group匹配以下任一项
    • [zx]-zx
    • |-或
    • ch-ch字符序列
    • |-或
    • sh?-ssh
  • es-es子串
  • $-字符串的结尾

相关问题 更多 >