PHP中的转义序列 \ s 匹配的完整字符列表是什么? 一些正则表达式包括垂直空间和此转义序列中的其他字符。
答案 0 :(得分:3)
PHP仅对水平空白字符\h
:http://www.php.net/manual/en/regexp.reference.escape.php
根据http://www.pcre.org/pcre.txt:
为了与Perl兼容,\ s与VT字符(代码不匹配)匹配 11)。这使它与POSIX“space”类不同。 \ s 字符是HT(9),LF(10),FF(12),CR(13)和空格(32)。如果 “使用locale;”包含在Perl脚本中,\ s可能与VT字符匹配 - 之三。在PCRE中,它永远不会。
因此,如果“垂直空间”指垂直制表符,则答案为否。
The sequences \h, \H, \v, and \V are features that were added to Perl at release 5.10. In contrast to the other sequences, which match only ASCII characters by default, these always match certain high-valued codepoints in UTF-8 mode, whether or not PCRE_UCP is set. The horizontal space characters are: U+0009 Horizontal tab U+0020 Space U+00A0 Non-break space U+1680 Ogham space mark U+180E Mongolian vowel separator U+2000 En quad U+2001 Em quad U+2002 En space U+2003 Em space U+2004 Three-per-em space U+2005 Four-per-em space U+2006 Six-per-em space U+2007 Figure space U+2008 Punctuation space U+2009 Thin space U+200A Hair space U+202F Narrow no-break space U+205F Medium mathematical space U+3000 Ideographic space The vertical space characters are: U+000A Linefeed U+000B Vertical tab U+000C Formfeed U+000D Carriage return U+0085 Next line U+2028 Line separator U+2029 Paragraph separator
答案 1 :(得分:3)
来自pcrepattern specifications页面:
通用字符类型
\s any white space character
为了与Perl兼容,\ s不用于匹配VT字符 (代码11),它使它与POSIX“space”类不同。 然而,Perl在5.18版本中添加了VT,并且PCRE紧随其后 发布8.34。默认的\ s字符现在是HT(9),LF(10),VT (11),FF(12),CR(13)和空间(32),它们被定义为白色 “C”语言环境中的空格。如果区域设置特定,此列表可能会有所不同 正在进行匹配。例如,在某些语言环境中 “非破碎空间”字符(\ xA0)被识别为空白区域, 在其他人中,VT角色不是。
所以\s
将匹配5个字符加上更多,具体取决于:
This test比较各种版本的PHP中preg_match的结果。
答案 2 :(得分:1)
来自http://www.pcre.org/pcre.txt:
\ s \ p {Z}匹配的任何字符, 加上HT,LF,FF,CR