如何匹配包含任意字符串的正则表达式,并使用PHP将该任意字符串仅获取到变量中?

如何匹配包含任意字符串的正则表达式,并使用PHP将该任意字符串仅获取到变量中?,php,regex,string,Php,Regex,String,我正试图用PHP编写一种非常简单的标记语言,其中包含[x=123]这样的标记,我需要能够匹配该标记并只提取x的值 我假设答案涉及正则表达式,但也许我错了 如果我们有一个字符串: $str = "F9F[x=]]^$^$[x=123]#3j3E]]#J"; 和要匹配的正则表达式: /^\[x=.+\]$/ 如何只将匹配字符串的“+”部分放入变量中?您可以使用preg\u match在字符串中搜索正则表达式 查看此处的文档:了解有关如何使用它的更多信息(以及一些示例)。您可能还想看看preg\u

我正试图用PHP编写一种非常简单的标记语言,其中包含[x=123]这样的标记,我需要能够匹配该标记并只提取x的值

我假设答案涉及正则表达式,但也许我错了

如果我们有一个字符串:

$str = "F9F[x=]]^$^$[x=123]#3j3E]]#J";
和要匹配的正则表达式:

/^\[x=.+\]$/

如何只将匹配字符串的“+”部分放入变量中?

您可以使用preg\u match在字符串中搜索正则表达式


查看此处的文档:了解有关如何使用它的更多信息(以及一些示例)。您可能还想看看preg\u grep

以下代码应该适合您:

$str = "F9F[x=]]^$^$[x=123]#3j3E]]#J";
if (preg_match('~\[x=(?<valX>\d+)\]~', $str, $match))
   echo $match['valX'] . "\n";

这叫做捕获组。您的正则表达式错误地查找
^
开始和
$
结束,并且
+
太贪婪了。*有关一些有用的工具或更好的教程,请参见和。
123