2011-04-03 182 views
1

全部问候,正则表达式匹配两个字符之间的字符串,但不包括字符

我还有一个RegEx问题。我花了数小时的搜寻,但显然我错过了我需要的一篇重要文章。

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

反正...

字符串是:

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

当前的代码:

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

$比赛[0]变为:

 "(SIP/100-00000033)" 

我想要什么是:

 "SIP/100-00000033" 

我很抱歉,因为我确定这很简单,但我只是没有把握它。有人会关心教育我吗?

预先感谢您!

+1

你告诉我你没有检查'$匹配的内容'!? – Nick 2011-04-03 21:36:38

+0

'var_dump($ matches);' – Gordon 2011-04-03 21:38:25

+0

@Nick:我明白你为什么向我扔了一个“愚蠢”的石头。我没有指定我通过Asterisk使用这个脚本,它不允许使用“var_dump” - 无可否认,我可以使用其他机制来检查数组的内容,但我根本没有想到它。但我们都必须通过经验来学习。所以感谢你的洞察力。 – Joel 2011-04-04 11:14:30

回答

7

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

$matches[1] 

如果以某种方式给出错误,post'em,我们将解决。

+0

解决了它,谢谢。我知道这会很简单。 – Joel 2011-04-04 11:12:51

3

如果你真的想在全场比赛排除括号,你可以用前瞻,看看隐藏assertions

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