正则表达式匹配“但不是”

时间:2012-07-24 23:36:03

标签: regex

我总是完全对正则表达式感到茫然,所以我希望有人可以提供帮助。

Joomla使用此正则表达式来验证ini文件的行:

/^(|(\[[^\]]*\])|([A-Z][A-Z0-9_\-]*\s*=(\s*(("[^"]*")|(_QQ_)))+))\s*(;.*)?$/

这些行具有这种格式

JLIB_LOGIN_AUTHENTICATE="Username and password do not match or you do not have an account yet."

显然,值"中不允许\",但\"可能是|(\Q\"\E)。目前这与上述正则表达式相匹配。我可以看到它是如何匹配但我不能修改正则表达式不匹配{{1}}。我尝试将{{1}}添加到各个地方,但没有运气。

2 个答案:

答案 0 :(得分:6)

改变这个:

"[^"]*"

对此:

"(\\"|[^"])*"

查看在线工作:ideone

答案 1 :(得分:3)

[^"]替换为([^"]|(\\"))