正则表达式 - 匹配交替字符模式

8
我想匹配交替出现的小写字母模式。
ababababa -> match

我尝试过这个。
([a-z][a-z])+[a-z]

但这也是一个匹配项。
ababxyaba

“Alternating”或者只是“奇数个字符”?如果是后者,请使用^$锚定模式。 - Wiktor Stribiżew
什么是交替小写字符? - marvel308
一个包含两个相同字符交替出现的字符串 -> xyxyxyxy,但不是xyxyxyabxyxy。 - cmplx96
1个回答

15

您可以使用带有两个反向引用的正则表达式来匹配交替出现的小写字母:

^([a-z])(?!\1)([a-z])(?:\1\2)*\1?$

正则表达式演示

正则表达式解析:

  • ^:匹配开头
  • ([a-z]):捕获组 #1 中匹配第一个字母
  • (?!\1):顺序环视,确保不匹配相同的字母
  • ([a-z]):捕获组 #3 中匹配第二个字母
  • (?:\1\2)*:匹配零或多个首尾字母成对出现的字符
  • \1?:匹配可选的结尾前的首字母
  • $:匹配结尾

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接