第1组未跟随第2组

问题描述 投票:1回答:1

我有一个像这样的正则表达式:

((?:(?<![^aoeiu])(?:y)|[^aoeuiy])*)([ioeua]+(?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)*([ioeua]*)

这就是它在debuggex.com上看起来更容易想象的方式:enter image description here

这是我用pythex.org用字符串private测试时得到的结果:

比赛1: 1. pr 2. at 3. e

比赛2: 空的 没人 空的

结果有两个问题:

  1. 我期待第1组,第2组,第3组分别是private。但是,它不在结果中。
  2. 根据我的理解,如果组1包含某些东西,那么组2也是如此,连接这两个组将产生一个字符串,该字符串是private的子字符串。但是,在第1场比赛(连接收益率prat)中,我没有看到字母i。这是为什么?

这里有什么我想念的吗?

python regex
1个回答
2
投票

你给的正则表达式按预期工作,

在第一个匹配中,您的第二个组捕获单词中心的最后一次VC迭代(因为您在组括号后输入了贪婪的星号*),也许您的意思是:

((?:(?<![^aoeiu])(?:y)|[^aoeuiy])*)((?:[ioeua]+(?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)*)([ioeua]*)

代替?

至于第二个空的比赛,用加号替换星号(可能这实际上是英语中的合法辅音群?)会让它完全消失

((?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)((?:[ioeua]+(?:(?<![^aoeiu])(?:y)|[^aoeuiy])+)+)([ioeua]+)

尝试了https://regex101.com/

© www.soinside.com 2019 - 2024. All rights reserved.