有没有办法将一些字符串传递给regexp而不用担心特殊字符的ecranisation。
例如,我不会找到以“\ north + west \”开头的行,因为你可以看到“\ n”和“h +”应该是ecranised。所以问题是有一些特殊的组合来写文本吗?
/^\s+(<some special combination> \north+west\)\s+/i
或者您可能知道可以正确制作文字的功能吗?
答案 0 :(得分:1)
在PHP和Perl中,您可以使用\Q...\E
分隔符来自动调用regexp中的元字符。引用the doc:
\Q
和\E
可用于忽略模式中的regexp元字符。 例如:\w+\Q.$.\E$
将匹配一个或多个单词字符, 后跟文字.$.
并锚定在字符串的末尾。
答案 1 :(得分:0)
除@raina77ow answer之外,当您通过PHP等需要模式分隔符的语言使用pcre时,如果您的字符串包含开头或结束分隔符,则无法使用\Q...\E
功能。例如,您不能编写如下模式:
/\Qabc/def\E/
~\Qabc~def\E~
[\Qabc[def\E]
[\Qabc]def\E]
(\Qabc)def\E)
(\Qabc(def\E)
唯一的方法是使用preg_quote
函数并在第二个参数中放置分隔符(仅当这个分隔符不是特殊的正则表达式字符时)。