Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式模式匹配两个字符之间的字符串,但不包括字符_Php_Regex - Fatal编程技术网

Php 正则表达式模式匹配两个字符之间的字符串,但不包括字符

Php 正则表达式模式匹配两个字符之间的字符串,但不包括字符,php,regex,Php,Regex,大家好, 我还有一个正则表达式问题。我已经搜索了几个小时,但显然我错过了我需要的一篇关键文章 我需要在PHP中使用preg_match()来匹配括号之间的字符串,但不能在结果中显示括号。我见过类似问题的例子,但我相信我的问题是不同的,因为实际上我处理的是括号,正则表达式中的一个元字符。有什么好处吗 无论如何 字符串为: "200 result=1 (SIP/100-00000033)" 目前的代码是: preg_match("/\((.*)\)/s", $res, $matches)

大家好,

我还有一个正则表达式问题。我已经搜索了几个小时,但显然我错过了我需要的一篇关键文章

我需要在PHP中使用preg_match()来匹配括号之间的字符串,但不能在结果中显示括号。我见过类似问题的例子,但我相信我的问题是不同的,因为实际上我处理的是括号,正则表达式中的一个元字符。有什么好处吗

无论如何

字符串为:

     "200 result=1 (SIP/100-00000033)"
目前的代码是:

preg_match("/\((.*)\)/s", $res, $matches);
$matches[0]变为:

     "(SIP/100-00000033)"
我想要的是:

     "SIP/100-00000033"
我很抱歉,因为我确信这很简单,但我只是没有领会。有人愿意教育我吗


提前谢谢你

这都是指在正则表达式中对项进行分组的方式。您的解决方案实际上是正确的,只是对匹配使用了错误的索引。尝试:

$matches[1]

如果出现了错误,请发布它们,我们将进行修复。

好的,这都是指在正则表达式中对项进行分组的方式。您的解决方案实际上是正确的,只是对匹配使用了错误的索引。尝试:

$matches[1]

如果出现错误,请发布错误,我们将进行修复。

如果确实希望完全匹配排除括号,可以使用“向前看”和“向后看”:


preg_match('/(?如果确实希望完整匹配排除括号,可以使用“向前看”和“向后看”:


preg_match('/(?你是说你没有检查
$matches
)的内容?@Nick:我理解你为什么向我扔一块“愚蠢”的石头。我没有指定我是通过星号使用这个脚本的,星号不允许使用“var_dump”-诚然,我本可以使用其他机制来检查数组的内容,但我根本没有想到。但我们都必须从经验中学习。因此,感谢你的洞察力。你是说你没有检查
$matches
的内容!?@Nick:我明白你为什么扔了一个“愚蠢的”字我没有通过星号指定我正在使用这个脚本,因为星号不允许使用“var_dump”-诚然,我本可以使用其他机制来检查数组的内容,但我根本没有想到。但我们都必须从经验中学习。因此,感谢你的洞察力。这解决了问题,谢谢。我知道这会很简单。这解决了问题,谢谢。我知道这会很简单。