我希望构建与重复单个字符模式相匹配的Q正则表达式,然后是彼此之间的匹配。例如,三次相同的字符'A‘,然后两次另一个字符'B’。如果第二组的角色被重复超过两次并不重要。例如,它应该与字符串wuzDDDFFFxji匹配。
Full match 3-8 `DDDFF`
Group 1. 3-4 `D`
Group 2. 6-7 `F`我提出了以下正则表达式,但有一个限制。
(.)\1{2}(.)\2{1}它几乎可以工作,但它不会排除第一组的字符在第二组中被匹配。字符串qwuiuQQQQQsas将匹配,因为:
Full match 5-10 `QQQQQ`
Group 1. 5-6 `Q`
Group 2. 8-9 `Q`这与我想要的不匹配,但我无法找到正确的语法来排除特定组在另一个组中的匹配。我最近的尝试似乎不起作用
(.)\1{2}((?:\1))\2{1}
1st Capturing Group (.)
. matches any character (except for line terminators)
\1{2} matches the same text as most recently matched by the 1st capturing group
{2} Quantifier — Matches exactly 2 times
2nd Capturing Group ((?:\1))
Non-capturing group (?:\1)
\1 matches the same text as most recently matched by the 1st capturing group
\2{1} matches the same text as most recently matched by the 2nd capturing group
{1} Quantifier — Matches exactly one time (meaningless quantifier)这里有什么线索吗?非常感谢!
发布于 2017-01-09 11:21:37
为了避免匹配qwuiuQQQQQsas,您需要使用负前瞻性而不是非捕获组:
(.)\1{2}((?!\1).)\2
^^^^^^见regex演示。
(?!\1)负面展望将“限制”.模式只匹配与第1组匹配的字符。
非捕获组不限制任何模式,但习惯于只对仍在使用文本的子模式进行分组,而非捕获组(零宽度断言)不使用文本,只检查字符串中是否存在符合该模式的文本。
发布于 2017-01-09 11:22:15
https://stackoverflow.com/questions/41546687
复制相似问题