匹配括号内的所有内容

时间:2014-04-21 07:40:59

标签: php regex

我正在研究PHP中的正则表达式,它将匹配括号内的所有内容,我特别是对于符号(&)

有特殊字符的问题

如果括号内的字符串包含&符号,则它不匹配。

以下是示例字符串

_categories=true(test_asda=asd asdasd,asdawqe&hello=asdads)

这是预期的输出

test_asda=asd asdasd,asdawqe&hello=asdads

这是我目前使用的正则表达式

/\(([^\&)]+)\)/

2 个答案:

答案 0 :(得分:3)

你的正则表达式应该是:

/\(([^)]+)\)/

您正在使用[^\&)]+这意味着匹配,直到您点击&符号或右括号,这就是为什么它会在找到&后立即停止

答案 1 :(得分:1)

菲利普,这个简单的正则表达式应该做你想做的事。

$result = preg_replace('/_categories=true\(([^)]+)\)/', '\1', $subject);

输入:_categories=true(test_asda=asd asdasd,asdawqe&hello=asdads)

输出:test_asda=asd asdasd,asdawqe&hello=asdads

它是如何工作的?一旦我们进入括号,我们就开始捕获组1.我们捕获的是[^)]+,这意味着“任意数量的字符不是右括号”,允许您将字符串消耗到右括号{ {1}}