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"

我只期待第一个没有花括号的数组...我缺少正则表达式的什么? 谢谢

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]);

你的eval