又一篇Regex學習筆記

來源:互聯網
上載者:User

1. \b:表示單詞的開頭或者結尾,可能是空格、標點符號或者換行,但是\b不匹配其中的任何一個,這是指代這些元素中的任一個位置。
樣本:\bhi\b:尋找文本中所有的“hi”單詞,但是不包括him、history等字樣
1.1 ^:匹配字串的開始,特指一個段落的起始。
1.2 $:匹配字串的結束。特指一個段落的結尾,這兩個都是\b的子集。
重複:
2. *:表示*前面的內容重複出現任意多次,".*"連在一起就表示任意數量的不包含分行符號的字元。
樣本:\bhi\b.*\bLucy\b:先是一個hi,然後任意多個字元(但不能有斷行符號),最後是一個單獨的單詞Lucy。
2.1 +:同樣表示數量,但是+必須是1次或以上,不包括0次,而*是指任意數量,包括0次重複。
2.2 {n}:數量控制,前方的字元精確重複n次。
2.3 {n,m}:數量控制,前方的字元重複n到m次,n<=m。
2.4 ?:重複0次或1次。
3. .: 表示任一字元,不包含斷行符號換行。
4. \d:匹配任意的數字(0,1,2……9)
樣本:0\d\d-\d{7}:尋找以0開頭,後兩個是數字,然後是一個連字號"-",接著是7個數位字串,如:025-8224110。
5. \s:匹配任意的空白符,包括空格、定位字元(tab鍵)、分行符號、中文全形空格等。
6. \w:匹配字母、數字、下劃等。
樣本1:\ba\w*\b:匹配以字母"a"開頭,然後是任意多個任一字元不包括空格等空白符,然後一個單詞結束符。其意義就是以a開頭的所有單詞。
樣本2:\b\w{6}\b:匹配正好是6個字元長度的單詞。
7. []:任意匹配一個方括弧中存在的字元。
樣本:[abc]\w{4}\b:以a、b、c中的任意一個字元為開頭,後面有4個字母的單詞。
反義
8. \D \S \W \B 這些元字元的大寫形式分別表示他們表示的集合的反義。
樣本:\D:表示不是數位所有字元,如:abced
8.1 [^x]:表示不是x字元的所有字元
8.2 [^xyz]:表示不是x、y、z中任一種的字元
9.替換
"|":使用"|"符號可以實現邏輯或運算,配合小括弧"()"的使用,可以實現不同條件的或運算。
10分組
"()":用括弧包圍住已經實現的運算式,可以方便的繼續使用重複、替換等操作。
樣本:\b(\w+\b\s+)\1+\b:將第一次出現的括號運算式用\1表示,可以匹配go go go
自學到這裡已經非常不錯了,下面繼續研究Regex的進階屬性
斷言:
(?=express)這是一種假定條件,可以放在運算式的後方,已驗證前方的字元後面的運算式是否為express,但是並不包含後方的express。
樣本:\b\w*(?=ing\b):取得尾碼為ing的所有單詞的首碼。
(?<=express)前置斷言,放於運算式首部,已驗證字串前方的運算式是否符合express,同樣也不包含express本身。
樣本:(?<=\bre)\w*\b:取得所有首碼為re的單詞的後面部分
注釋:
(?#)以這種形式來注釋Regex。
樣本:2[0-4]\d(?#200-249)
懶惰模式比對
*:匹配最多的字元
*?:匹配最少的字元

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.