php正则表达式查找字符串的一部分


php regex find part of string

我试图在大括号中找到一个可以出现在许多变体中的字符串。

即。在下面的字符串中,我正在搜索单词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]);

您的评估