正则表达式中的“\”转义的问题 在MySQL中使用正则,如遇到要匹配回车,要这样写:\\n 书上说是因为,MySQL要解释一个\,正则表达式在解释一个\。 由此我想到了PHP中正则,关于\n的问题。然后我做了一个测试:
PHP code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
preg_match("/\w{3}\\n\w{3}/", "aaa\naaa", $match);
var_dump($match); //结果是:array(1) { [0]=> string(7) "aaa aaa" }
这样可以得出正确结果的,这个我能理解:一个“\”让PHP解释了,另一个“\”被正则解释了。
然后我又把正则表达式改成:"/\w{3}\n\w{3}/"
这样也得出了正确的结果~~~~这我就不明白了。
为什么在PHP里,用一个“\”就可以呢?如果按照书上的说法,那这个“\”不是被php解释了吗?那到正则那块不就没的解释了吗?
------解决方案-------------------- 正则里面\n就已经匹配你需要的结果.这是约定的代表符
------解决方案-------------------- \n 在双引号里面别解析为换行
而 \\n 和 \n 都能匹配换行。
------解决方案--------------------
探讨
错了错了! 是这样: 那比如这个字符串:$a = "aaa\\naaa"; 必须要用"/\w{3}\\\\n\w{3}/"才能匹配的到,这是为什么呢?
------解决方案--------------------
\n是一个字节,prg需要的就是这么一个字节,但它同样认为\n两个字符是换行符,所以以下都是正确的。
'\n' “\n”. “\\n”
------解决方案-------------------- 你理解的基本正催。 \\ 会被php解释为 ‘\’, 但\w php依然解释为\w
对于控制字符, 如果用的是双引号, \n会被php解释成换行, 单引号则依然是字符'\n' 正则表达式里不管是换行还是'\n'都能匹配到换行符。
Statement: The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn