正则表达式 - 匹配冗余序列

时间:2015-04-04 09:47:12

标签: regex lookahead lookbehind

我想设计一个regexp,它可以捕获在一个更大的字符串中至少包含两次的所有字母序列:

例如,我们采取:

abzabuiabuz => a, b, ab, z, bu, u

我在考虑前瞻和后视,但我看不到合适的解决方案。

非常感谢你的帮助!

修改

我的原始问题是在-a中找到-beu-a us-b eu-c eu-b us-a us-a

2 个答案:

答案 0 :(得分:1)

捕获一个或多个字符并对这些捕获的字符进行反向引用,然后将整个模式置于正向前瞻断言中。

(?=(.+).*\1)

DEMO

从组索引1中获取重复的字符。

答案 1 :(得分:0)

您可以使用following regex

\b\S+-(?:a|b)\b

它会匹配字符串中以-a-b结尾的所有字词。

eu-a
us-b
eu-b
us-a
us-a

如果您需要实际获得-a-b,您可以使用\b\S+(-(?:a|b))\b正则表达式并抓取第1组值。