在PHP中,轉義序列\ s匹配的字符的完整列表是什麼? 一些正則表達式風格包括垂直空間和這個轉義序列中的其他字符。PHP中 所匹配的空格是什麼?
回答
通用字符類型
\s any white space character
爲了與Perl兼容,\ s沒有用來匹配VT字符 (代碼11),這使得它與POSIX「空間」類不同。 但是,Perl在版本5.18中添加了VT,而PCRE在 版本8.34中也加上了。默認的\ s字符現在是HT(9),LF(10),VT (11),FF(12),CR(13)和空格(32),它們被定義爲白色 空間中的「C 「語言環境。如果匹配正在發生,特定區域設置 ,此列表可能會有所不同。例如,在某些語言環境中, 「不間斷空格」字符(\ xA0)被識別爲空格, ,而在其他字符中,VT字符不是。
所以\s
將匹配5個字符,再加上更多的取決於:
- PCRE庫版本
- 區域設置
This test跨PHP的各種版本的preg_match的結果進行比較。
PHP有\h
僅用於水平空白字符:http://www.php.net/manual/en/regexp.reference.escape.php
根據http://www.pcre.org/pcre.txt:
對於用Perl兼容性,\ s不所述VT字符(代碼 11)相匹配。這使得它不同於POSIX「空間」類。字符是HT(9),LF(10),FF(12),CR(13)和空格(32)。如果 「使用語言環境;」包含在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
從http://www.pcre.org/pcre.txt:
\ S任何字符\ p {Z}匹配, 加HT,LF,FF,CR
正確引用時,這取決於編譯時設置。 PHP在該代碼周圍使用'#ifdef PCRE_UCP'。它不應該被依賴。 – mario 2011-03-29 11:35:12
- 1. 什麼是匹配
- 2. 什麼的意思是 「匹配通配符是嚴格的」
- 3. 正回顧後匹配所有空格
- 4. \ s +不匹配所有空格?
- 5. 在bash中匹配空格
- 6. 要什麼是regexpression ':[^:] +:[ - ^:] +:[ - ^:] + *' 匹配
- 7. 匹配是什麼東西?
- 8. PHP preg_replace不匹配多個空格
- 9. JavaScript中匹配的含義是什麼
- 10. C#regex中的[^]匹配是什麼?
- 11. JavaScript RegExp什麼是匹配
- 12. 什麼是穩定匹配?
- 13. 爲什麼不使用的regex * +(所有格)不匹配
- 14. 什麼PHP regexthat只能匹配字母數字,空格,句點和逗號?
- 15. 這個sed命令爲什麼不匹配空格?
- 16. PHP匹配控制字符,但不是空格?
- 17. 非匹配組的目的是什麼
- 18. 什麼是隻匹配空字符串的正則表達式?
- 19. 空的正則表達式匹配紅寶石是什麼?
- 20. 按鈕中的空格是什麼?
- 21. 僅匹配空格內{}
- 22. 僅匹配空格的通配符
- 23. 什麼是相反的JavaScript匹配()
- 24. 什麼是=〜的Rspec 3.0匹配器?
- 25. 什麼在PHP if($ var)匹配?
- 26. 什麼在Java中匹配
- 27. php str_replace是由什麼字符串匹配算法寫的?
- 28. 打印所有$匹配PHP
- 29. 爲什麼preg_match與空模式總是匹配
- 30. 爲什麼我的RegExp在RegExr中匹配,但不是在Python中匹配?
我也到了這裏尋找名單。但頁面可能已經改變。下面的列表: 空白由\ S匹配裝置只有這些5個字符: 9 = 0×09 =水平製表, 10 =的0x0A =換行, 12 = 0x0C =形式飼料, 13 = 0X0D =回車, 32 = 0x20 =空格, http://www.php.net/manual/en/regexp.reference.escape.php – 2013-10-11 14:44:36