RegEx模式匹配两个字符之间的字符串,但排除字符

时间:2011-04-03 21:31:24

标签: php regex

问候所有人,

我还有另一个RegEx问题。我已经做了几个小时的搜索,但显然我错过了我需要的一篇关键文章。

我需要在PHP中使用preg_match()来匹配括号之间的字符串,但不要在结果中显示括号。我已经看到了类似问题的例子,但我相信我的问题是不同的,因为它实际上是我正在处理的括号,是RegEx中的元字符。有什么好处吗?

反正...

字符串是:

     "200 result=1 (SIP/100-00000033)"

目前的代码是:

preg_match("/\((.*)\)/s", $res, $matches);

$ matches [0]变为:

     "(SIP/100-00000033)"

我想要的是:

     "SIP/100-00000033"
我很抱歉,因为我确信这很简单,但我只是不理解它。有人会关心教育我吗?

提前谢谢!!

2 个答案:

答案 0 :(得分:7)

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

$matches[1]

如果以某种方式给出了错误,那就发布吧,我们会解决。

答案 1 :(得分:3)

如果你真的希望完整匹配排除括号,你可以使用前瞻和后瞻assertions

preg_match('/(?<=\().*(?=\))/s', $res, $matches);