我想编写一个正则表达式,它将匹配至少重复两次的模式,然后是相同模式的一部分。
例如,abcabca应该匹配,abcabcab应该匹配,defdefdefde等等。
我想我需要使用反向引用。我想象^(.+?){2,}\1$
之类的东西,但不知何故只匹配\1
背面参考的一部分。
鉴于重复模式abc
,我希望至少匹配2次出现abc
,然后匹配字符串abc
的一部分。
这些应匹配:
FooFooF
(这是Foo
的两次重复,然后是Foo
中的第一个字母)FooFooFoo
(这是Foo的3次重复,后跟0长度子串或2后跟整个单词作为子串。这取决于你如何看待它。)FooFooFooFo
(这是3次重复后跟Fo
,Foo
中的前两个字母)这些不应该:
Foo
(需要重复2次)FooFo
(这只是1次重复)FooFooFoX
(FoX
不属于字符串Foo
,因此不匹配。)这可能吗?如果是这样,我该怎么做?
答案 0 :(得分:2)
如果你想使用3个字符的模式,你可以使用这样的正则表达式:
\b(.{3})\1.*?\b
<强> Working demo 强>
但是如果你想拥有为第一个字符定义的任何模式,那么你可以使用:
\b(.+)\1.*?\b
<强> Working demo 强>