上節我們提到了正則表達式,它提升了文本處理的表達能力,本節就來討論正則表達式,它是什麼?有什麼用?各種特殊字元都是什麼含義?如何用Java藉助正則表達式處理文本?都有哪些常用正則表達式?由於內容較多,我們分為三節進行探討,本節先簡要探討正則表達式的語法。 正則表達式是一串字元,它描述了一個文本模式 ...
上節我們提到了正則表達式,它提升了文本處理的表達能力,本節就來討論正則表達式,它是什麼?有什麼用?各種特殊字元都是什麼含義?如何用Java藉助正則表達式處理文本?都有哪些常用正則表達式?由於內容較多,我們分為三節進行探討,本節先簡要探討正則表達式的語法。
正則表達式是一串字元,它描述了一個文本模式,利用它可以方便的處理文本,包括文本的查找、替換、驗證、切分等。
正則表達式中的字元有兩類,一類是普通字元,就是匹配字元本身,另一類是元字元,這些字元有特殊含義,這些元字元及其特殊含義就構成了正則表達式的語法。
正則表達式有一個比較長的歷史,各種與文本處理有關的工具、編輯器和系統都支持正則表達式,大部分編程語言也都支持正則表達式。雖然都叫正則表達式,但由於歷史原因,不同語言、系統和工具的語法不太一樣,本文主要針對Java語言,其他語言可能有所差別。
下麵,我們就來簡要介紹正則表達式的語法,我們先分為以下部分分別介紹:
- 單個字元
- 字元組
- 量詞
- 分組
- 特殊邊界匹配
- 環視邊界匹配
最後針對轉義、匹配模式和各種語法進行總結。
單個字元
大部分的單個字元就是用字元本身表示的,比如字元'0','3','a','馬'等,但有一些單個字元使用多個字元表示,這些字元都以斜杠'\'開頭,比如:
- 特殊字元,比如tab字元'\t',換行符'\n',回車符'\r'等;
- 八進位表示的字元,以\0開頭,後跟1到3位數字,比如\0141,對應的是ASCII編碼為97的字元,即字元'a';
- 十六進位表示的字元,以\x開頭,後跟兩位字元,比如\x6A,對應的是ASCII編碼為106的字元,即字元'j';
- Unicode編號表示的字元,以\u開頭,後跟四位字元,比如\u9A6C,表示的是中文字元'馬',這隻能表示編號在0xFFFF以下的字元,如果超出0XFFFF,使用\x{...}形式,比如對於字元'