我正在编写非常复杂的正则表达式并使用Rubular editor对其进行测试,几个小时后我意识到它在PHP中不起作用。
这只是较长的正则表达式模式的一小部分:
((\\\\|\\\|)|[^\\\|])*?
我必须在以下条件下使用马克思字符串。
|
转义的\|
个字符。\
转义的\\
个字符。这意味着像
这样的字符串test
test\\
test\|
t\\e\|s\|\|t\\\\\\\\\\
正确,以及
等字符串test\
test|\
\
|
test\\\\|
NOT CORRECT
此外,Rubular接受[^\\\|]
和[^\|\\]
(相同)。 PHP不适用于[^\|\\]
。为什么呢?
这是我看不到的东西,因为我认为这两个字符都已正确转义,但PHP不同意我。
我仍然是这个正则表达式的新手,所以不要怪我的愚蠢。
提前致谢!
答案 0 :(得分:4)
在PHP中引用时,你需要双重转义\。
regex = "/((\\\\\\\\|\\\\\\|)|[^\\\\\\|])*?/";