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


RegEx pattern to match a string between two characters, but exclude the characters

大家好

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

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

不管怎样…

字符串:

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

当前代码为:

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

$ matches[0]变成了:

     "(SIP/100-00000033)"

我想要的是:

     "SIP/100-00000033"

我很抱歉,因为我确信这是非常简单的,但我只是没有抓住它。有人愿意教我吗?

提前感谢!!

这都是指在正则表达式中对项进行分组的方式。你的解是正确的,你只是用了错误的索引来匹配。试一试:

$matches[1]

如果出现错误,我们会把它们贴出来修复

如果您真的希望完全匹配排除括号,您可以使用向前查找和向后查找断言:

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