问候所有人,
我还有另一个RegEx问题。我已经做了几个小时的搜索,但显然我错过了我需要的一篇关键文章。
我需要在PHP中使用preg_match()来匹配括号之间的字符串,但不要在结果中显示括号。我已经看到了类似问题的例子,但我相信我的问题是不同的,因为它实际上是我正在处理的括号,是RegEx中的元字符。有什么好处吗?
反正...
字符串是:
"200 result=1 (SIP/100-00000033)"
目前的代码是:
preg_match("/\((.*)\)/s", $res, $matches);
$ matches [0]变为:
"(SIP/100-00000033)"
我想要的是:
"SIP/100-00000033"
我很抱歉,因为我确信这很简单,但我只是不理解它。有人会关心教育我吗?
提前谢谢!!
答案 0 :(得分:7)
嗯,这一切都指的是你在正则表达式中对项目进行分组的方式。你的解决方案实际上是正确的,你只是使用错误的索引匹配。尝试:
$matches[1]
如果以某种方式给出了错误,那就发布吧,我们会解决。
答案 1 :(得分:3)
如果你真的希望完整匹配排除括号,你可以使用前瞻和后瞻assertions:
preg_match('/(?<=\().*(?=\))/s', $res, $matches);