回答
沒有括號的第一種模式相當於/(^a)|(b$)/
。
原因是,該管道操作符(「交替操作者」)具有所有正則表達式運算符的優先級最低:http://www.regular-expressions.info/alternation.html(第一標題下方的第三段)
哇,你的答案很快!非常感謝你! – Rei 2011-06-08 14:16:53
這個答案需要更新,因爲鏈接被破壞! – 2013-11-27 12:43:10
@JoshDavenport:謝謝,完成 – 2013-11-27 15:46:03
第一種方式是以a
開頭或以b
結尾。
第二種意思是1個字符,a
或b
。
/^a|b$/
其與a
開頭或結尾的字符串相匹配一個b
。所以它匹配afoo
,barb
,a
,b
。
/^(a|b)$/
:匹配以a
或b
開頭和結尾的字符串。所以它匹配a
或b
而沒有別的。
發生這種情況是因爲更改|
在正則表達式運算符中的優先級很低。
+1清楚的解釋&&例子&&理由_why_,不僅僅是_what_ – Wiseguy 2011-06-08 14:39:45
|
具有比錨較低的優先級,所以你說無論是^a
或b$
(這是真的),而不是第二個一個,這意味着「一個字符串,要麼a
或b
」 (這是錯誤的)。
在^a|b$
中,您匹配的是開頭的a
或結尾的b
。
在^(a|b)$
中,您匹配的是a
或b
是唯一的字符(在開頭和結尾處)。
- 1. 正則表達式混淆
- 2. 正則表達式混淆
- 3. 正則表達式混淆
- 4. 正則表達式格式混淆
- 5. Python的正則表達式混淆=
- 6. 混淆正則表達式的結果
- 7. 正則表達式示例混淆
- 8. Java正則表達式中的混淆
- 9. 混淆HTML正則表達式
- 10. Boost正則表達式混淆
- 11. 使用正則表達式的混淆
- 12. 正則表達式 - 捕獲組混淆
- 13. 正則表達式邊界混淆
- 14. 正則表達式:捕獲,組,混淆
- 15. 愚蠢的正則表達式混淆
- 16. 正則表達式初學者混淆
- 17. 管道正則表達式
- 18. 正則表達式中的小混淆在| (管)
- 19. 正則表達式包括管道
- 20. 在Yahoo!上正則表達式管道
- 21. 逃脫管道(「|」)在正則表達式
- 22. Fitnesse正則表達式與管道
- 23. 誰管道混淆
- 24. 正則表達式混亂
- 25. 正則表達式中的管道(多個)表達式
- 26. 確認與正則表達式 - 混淆,簡單的查詢
- 27. 與文件名選擇器螞蟻正則表達式混淆
- 28. 正則表達式 - 混淆 - 串的第一部分只匹配
- 29. 混淆Groovy的正則表達式匹配
- 30. 正則表達式轉換混淆電子郵件地址Perl
PHP,C++,Python,你正在問哪些正則表達式的實現? (看起來像PHP PCRE) – BoltClock 2011-06-08 13:22:15
我相信他們對我提供的代碼有相同的實現,所以我把它們放在標籤上:/ – Rei 2011-06-08 13:24:13