我试图在大括号中找到一个可以出现在许多变体中的字符串。
即。在下面的字符串中,我正在搜索单词Link
asdasd{Link1111:TAG}''r''n{TAG:Link2sds}
我使用以下命令:$pattern = "/{(Link.*?)}|{(.*Link.*?)}/";
结果是:
{array} [3]
0 => {array} [2]
0 = "{Link1:TAG}"
1 = "{TAG:Link2}"
1 = {array} [2]
0 = "Link1:TAG"
1 = ""
2 = {array} [2]
0 = ""
1 = "TAG:Link2"
我只期待第一个没有大括号的数组。。。regex缺少什么?thx。
preg_match_all
是全局的,可以查找所有匹配项。如果您只想找到一次,请使用preg_match
。
演示:https://eval.in/572825
当前示例中的0
索引完全匹配。1
是第一个捕获组Link.*?
,2
是您的第二个捕获组.*Link.*?
。
只需使用/{(.*?Link.*?)}/
,您的匹配项将在索引1 中
<?php
$str = "asdasd{Link1111:TAG}'r'n {TAG:Link2sds}";
$pattern = "/{(.*?Link.*?)}/";
preg_match_all($pattern, $str, $matches);
print_r($matches[1]);
您的评估