匹配正则表达式的一部分返回引用

时间:2014-08-14 21:05:17

标签: regex

我想编写一个正则表达式,它将匹配至少重复两次的模式,然后是相同模式的一部分。

例如,abcabca应该匹配,abcabcab应该匹配,defdefdefde等等。

我想我需要使用反向引用。我想象^(.+?){2,}\1$之类的东西,但不知何故只匹配\1背面参考的一部分。

鉴于重复模式abc,我希望至少匹配2次出现abc,然后匹配字符串abc的一部分。

这些应匹配:

  • FooFooF(这是Foo的两次重复,然后是Foo中的第一个字母)
  • FooFooFoo(这是Foo的3次重复,后跟0长度子串或2后跟整个单词作为子串。这取决于你如何看待它。)
  • FooFooFooFo(这是3次重复后跟FoFoo中的前两个字母)

这些不应该:

  • Foo(需要重复2次)
  • FooFo(这只是1次重复)
  • FooFooFoXFoX不属于字符串Foo,因此不匹配。)

这可能吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:2)

如果你想使用3个字符的模式,你可以使用这样的正则表达式:

\b(.{3})\1.*?\b

<强> Working demo

enter image description here

但是如果你想拥有为第一个字符定义的任何模式,那么你可以使用:

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

<强> Working demo

enter image description here