我有一个像这样的正则表达式:
((?:(?<![^aoeiu])(?:y)|[^aoeuiy])*)([ioeua]+(?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)*([ioeua]*)
这就是它在debuggex.com上看起来更容易想象的方式:
这是我用pythex.org用字符串private
测试时得到的结果:
比赛1:
1. pr
2. at
3. e
比赛2: 空的 没人 空的
结果有两个问题:
pr
,ivat
,e
。但是,它不在结果中。private
的子字符串。但是,在第1场比赛(连接收益率prat
)中,我没有看到字母i
。这是为什么?这里有什么我想念的吗?
你给的正则表达式按预期工作,
在第一个匹配中,您的第二个组捕获单词中心的最后一次VC迭代(因为您在组括号后输入了贪婪的星号*),也许您的意思是:
((?:(?<![^aoeiu])(?:y)|[^aoeuiy])*)((?:[ioeua]+(?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)*)([ioeua]*)
代替?
至于第二个空的比赛,用加号替换星号(可能这实际上是英语中的合法辅音群?)会让它完全消失
((?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)((?:[ioeua]+(?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)+)([ioeua]+)