我正在寻找一个正则表达式选项或技巧,以在匹配可以重叠时捕获正则表达式中所有可能的字符串。
示例:/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)
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?谢谢
您可以使用正向先行断言来获取所有 3 个匹配项:
(?=(A.A))
Run Code Online (Sandbox Code Playgroud)
对于您的输入,它会在捕获的组 #1中找到 3 个匹配项:
ABAACAADAPHP代码:
(?=(A.A))
Run Code Online (Sandbox Code Playgroud)
输出:
if (preg_match_all('/(?=(A.A))/', "ABACADA", $m))
print_r($m[1]); // printing index 1
Run Code Online (Sandbox Code Playgroud)