教你從零開始學習java正則表達式

正則表達式

正則表達式你們應該都不陌生,我今天從零開始介紹我本身的學習經驗和步驟!
字符組
在一對方括號 [ 和 ] 之間列出全部可能出現的字符,包括可見以及不可見的字符;例如:
[123]
表示能夠匹配一、二、3的單個字符。java

1字符組的範圍表示
若是能夠匹配的字符有規律性而且範圍比較大,好比0、一、二、三、四、五、六、七、八、9,表達式寫成
[0123456789]
這樣就顯得複雜也不美觀,因此引入符號「-」,使用 [x-y] 的形式表示在閉區間x到y範圍內的字符,上式能夠寫成
[0-9]正則表達式

【注意】:-範圍表示法必須遵循ASCII編碼的前後順序,即上式不可寫做 [9-0] ,而一些使人困惑的表達式也儘可能不要使用,好比 [0-z] 由於該式涵蓋了在ASCII編碼表中從0到z的所有字符(不只僅只有數字和小寫字母)。若是想要表示多個範圍,好比匹配數字、大寫字母和小寫字母,表達式能夠寫做
[0-9a-zA-Z]編程

2元字符與轉義
在表達式中有特殊功能而不做爲字符的一部分字符,稱爲元字符。好比前文講過的:[ ] - 都是元字符,若是想要恢復它們原本的字符屬性就要作一些特殊處理。先看通常狀況,取消元字符特殊含義的操做叫作轉義,操做是在表達式中的元字符前加反斜槓 。特殊狀況就是表示範圍的橫線 - ,當其緊鄰左方括號 [ 時就做爲普通字符處理,其餘狀況都做爲元字符表示範圍。編程語言

【注意】
一、橫線 - 也支持反斜槓的轉義,即[0-9]表示0、-、9三個字符。
二、右方括號 ] 不須要轉義。ide

3排除型字符組
當須要表示的字符組範圍很大,寫起來不方便,而恰巧它的補集(全集指全部字符)方便表示,引出了排除型字符組[^…] ,表示在當前位置匹配一個沒有列出的字符,請注意是「必須匹配一個沒有出現的字符」,而不是「不要匹配列出的字符」。例如:學習

[^0-9][^0-9]
能夠匹配「QQ」,但不能夠匹配「Q」。編碼

【注意】緊跟在 ^ 以後的 - 不是一個元字符!而^自身也是元字符,當且僅當^緊跟[時,不然表示它做爲字符的含義。
4字符組簡記法
常見的字符組簡記法有\d([0-9])、\w([0-9a-zA-Z_])、\s([\t\r\n\v\f])code

【注意】w能夠匹配下劃線,不等價於[0-9a-zA-Z]。另外字符組簡記法能夠單獨出現,也可使用在字符組中,如
[0-9a-zA-Z]能夠寫成[\da-zA-Z]
正則表達式也提供了上面三種經常使用簡記法的排除型:\D、\W、\S,這三種分別對應各自的補集(全集是指全部字符,即[dD]能夠匹配任意字符,剩餘兩者同理)。it

【再次注意】第一,使用字符組簡記法最好不要出現單獨的 - ;第二,上面描述的簡記法都是針對ASCII編碼而言的;第三,字符組簡記法不止這三種,還有其餘(也可能根據不一樣的編程語言衍生出新的簡記法),等遇到了再說。
5字符組的運算
當咱們所研究的問題要求咱們的全集不是全部字符,排除型字符組就顯得不是那麼的好用了。好比我須要匹配字母表第一、五、9個小寫字母,把全部字符看做全集顯然不合適,而把全部小寫字母看做全集就比較合適,可是寫成[b-df-hj-z]就比較複雜並且容易搞錯,Java就容許使用邏輯與(&&,也能夠理解爲取交集)來解決這個問題,即寫成:
[a-z]&&[^aei]
喜歡這樣文章的能夠關注我,我會持續更新,大家的關注是我更新的動力!須要更多java學習資料的也能夠私信我!
祝關注個人人都:身體健康,財源廣進,福如東海,壽比南山,早生貴子,從不掉髮!學習資料

相關文章
相關標籤/搜索