我刚刚为适用于php函数preg_match
编写了一个正则表达式,其中包含以下部分:
[\w-.]
匹配任何单词字符,以及减号和点。虽然它在preg_match中似乎可以工作,但我尝试将其放入一个叫做Reggy的实用程序中,它会报错"Empty range in char class"。试错告诉我,通过转义减号来解决此问题,将正则表达式变为:
[\w\-.]
由于原始正则表达式在PHP中似乎可以工作,我想知道为什么我应该或不应该转义减号,以及为什么我不需要转义句点,因为句点也是在PHP中具有含义的字符。我的实用程序只是傻瓜吗?它使用了另一种正则表达式方言还是我的正则表达式真的不正确,而我只是幸运地用preg_match逃脱了呢?
preg_quote
的理由? - Okonomiyaki3000preg_quote
将产生完全相反的效果。 :) 我确实意识到我标记了这个PHP,但我正在寻找适用于任何PCRE实现的答案。 - Pelle