2012-08-25 34 views
2

我正在學習正則表達式。我看了幾個教程,但我沒有發現它們清晰或全面。我的問題是何時使用^ $,何時是「\ b」。用過的?我知道他們 的意思,但只是確定如何。正則表達式中的表示法

一些例子:

1. \((\d+)\)\.\((\d+)\)\.\((\d+)\) 
2. \b1?264[)- ]*\d{3}[- ]*\d{4}\b 
3. ^[a-g]{4}$ 

不要將所有的正則表達式不得不開始以 「^」,並以 「$」 結尾?

+1

閱讀[掌握正則表達式第3版](http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124「有史以來最好的正規表達書」)。交出我讀過的最有用的書。花在學習上的時間很快就爲自己付出了很多。 – ridgerunner

回答

7

之前使用它們時看到,首先你需要知道他們的意思:

  • ^是線anchor的開始。
  • $是行錨的結束行。
  • \b匹配word boundary。換句話說,它匹配單詞字符\w和非單詞字符\W或字符串的開始或結束。

例如:

  • 要檢查字符串開始以數字使用^\d
  • 若要檢查字符串結尾與數字使用\d$
  • 若要檢查字符串是否包含字foo請使用\bfoo\b。省略單詞邊界會導致它匹配包含foo的單詞,例如seafood
+0

你是什麼意思「\ b」匹配單詞字符\ w和非單詞字符\ W? – Dombey

+0

@GTyler:我有另一個答案,我在更詳細的解釋\ b和\ B:http://stackoverflow.com/questions/4541573/what-are-non-word-boundary-in-regex-b-compared-字邊界這有幫助嗎? –

+0

@Mark Byers:在單詞字符'\ w'與不是單詞字符之間匹配'\ b'更準確,因爲如果第一個/最後一個字符是一個單詞,它可以匹配字符串的開始或結尾字符。 – MRAB

相關問題