正则表达式捕获重叠匹配

时间:2014-09-19 07:56:14

标签: regex

我正在寻找一个正则表达式选项或技巧,以便在匹配重叠时捕获正则表达式中的所有可能字符串。

示例:字符/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)
你能帮帮我吗?感谢

1 个答案:

答案 0 :(得分:2)

您可以使用positive lookahead assertion获取所有3场比赛:

(?=(A.A))

RegEx Demo

对于您的输入,它会找到3个匹配项:

  1. ABA
  2. ACA
  3. ADA