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