正則表達式的哪些特徵是標準的,哪些特徵是特殊的?
如果我想在不同的上下文,語言,平臺中使用相同的正則表達式,我該怎麼做,而不是做什麼?如何製作便攜式正則表達式?
4
A
回答
4
沒有標準,但如果最大的可移植性是你的目標,你應該堅持由JavaScript正則表達式支持的功能。所有其他的主要口味都支持JS所做的一切,在這裏和那裏只有很小的變化。例如,有些僅支持POSIX字符類表示法([:alpha:]
),而另一些則使用Unicode語法(\p{Alpha}
)。
也許最麻煩的變化是那些影響點(.
)和錨點(^
和$
)。例如,JavaScript沒有DOTALL(或「單行」)模式,因此要匹配任何東西,包括換行,您必須使用類似[\s\S]
的攻擊。與此同時,Ruby有一個DOTALL模式,但將其稱爲多行模式 - 其他人其他稱爲「多行」(^
和$
作爲行錨)是Ruby總是如何工作的。
也請注意點的不匹配(默認模式)。傳統上,這只是換行(\n
),但越來越多的口味採用(或至少接近)關於行分隔符的Unicode guidelines。例如,在Java中,點不匹配[\r\n\u0085\u2028\u2029]
中的任何一個,而^
和$
將\r\n
視爲單個分隔符,並且在兩個字符之間不匹配。
請注意,我只是在談論Perl派生的風格,如Python,Ruby,PHP,JavaScript等。如果使用基於GNU或POSIX的風格,比如grep,awk和MySQL的;他們傾向於擁有較少的功能,但這不是您選擇它們的原因。
我也不包括XML架構風格;它比JavaScript更有限,但它是一個專門的應用程序。例如,它不支持錨(^
,$
,\A
,\Z
等),因爲匹配總是錨定在兩端。
1
相關問題
- 1. 如何製作python正則表達式?
- 2. 正則表達式(正則表達式)
- 3. 正則表達式(正則表達式)
- 4. 的Javascript正則表達式 - 如何基於正則表達式
- 5. 正則表達式 - 控制
- 6. 正則表達式(正則表達式)不工作
- 7. Android的正則表達式製作
- 8. 正則表達式如何?
- 9. 製作與PHP正則表達式相當的JavaScript正則表達式
- 10. 正則表達式 - 如何Matcher.Group工作
- 11. 便攜式版本控制?
- 12. 便攜式方式
- 13. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 14. PHP-MySQLi替換爲正則表達式/正則表達式/正則表達式
- 15. 正則表達式正則表達式返回的值正則表達式
- 16. 正則表達式正則表達式模仿正則表達式
- 17. 便攜式Eclipse
- 18. Windbg便攜式?
- 19. 便攜式erlang
- 20. 如何製作正確的Javascript正則表達式?
- 21. Python的正則表達式:「喜歡」正則表達式模式?
- 22. 正則表達式表達
- 23. 正則表達式表達
- 24. 正則表達式格式
- 25. 正則表達式 - 模式
- 26. 正則表達式模式
- 27. 正則表達式模式
- 28. 正則表達式
- 29. 正則表達式
- 30. 正則表達式?
艾倫,您對我的回答的評論只是一個,因此我將其刪除(因爲您對所提出的問題的答案更好!)。 +1 – 2010-05-16 12:15:57