用于捕获重叠匹配的Regexp

用于捕获重叠匹配的Regexp,regex,Regex,我正在寻找一个regexp选项或技巧,当匹配可能重叠时,捕获regexp中所有可能的字符串 示例:/A.A/字符串“ABACADA” 它发现:ABA,ADA而不是ACA 我想:ABA、ACA、ADA 我用的是PHP,但它可以应用于其他语言 preg_match_all('/A.A/',"ABACADA",$matches); var_dump($matches[0]); // output : array (size=2) // 0 => string 'ABA' (length=3) /

我正在寻找一个regexp选项或技巧,当匹配可能重叠时,捕获regexp中所有可能的字符串

示例:
/A.A/
字符串
“ABACADA”

它发现:
ABA,ADA
而不是
ACA

我想:
ABA、ACA、ADA

我用的是PHP,但它可以应用于其他语言

preg_match_all('/A.A/',"ABACADA",$matches);
var_dump($matches[0]);
// output : array (size=2)
// 0 => string 'ABA' (length=3)
// 1 => string 'ADA' (length=3)
你能帮我吗?谢谢

您可以使用a获得所有3个匹配项:

(?=(A.A))
对于您的输入,它会找到3个匹配项:

(?=(A.A))
  • ABA
  • ACA
  • ADA

  • 只需使用前瞻
    (?=(a.a))
    参见@AvinashRaj:这应该是一个答案,而不是一条评论。然后投票以重复的形式结束:)