iosRegex

來源:互聯網
上載者:User

標籤:

1 Regex的文法中也有一些保留字([,( and)\,*,+,?,{ and },^,$,.,| (pipe),/)。這些字元被用作進階模式比對。如果你想搜尋這些字元中的一個,你需要用反斜線(\)轉義它,例如,為了搜尋一個文字區塊中的句號,不是用.,而是用\.

2 截獲圓括弧(capturing parentheses) 被用作組模式的一部分。例如:3 (pm|am)會匹配文本“3 pm” ,也會匹配“3 am”。豎線字元(|)執行的是或操作。只要你樂意,你可以包含多個豎線字元在你的Regex中。例如,(Tom|Dick|Harry)是一個有效模式,它能匹配那三個名字中的任一個。

字元組(Character classes)相當於一組字元中匹配單個字元。字元組出現在中括弧([ 和 ])之間。例如,Regex t[aeiou]會匹配“ta”、“te”、“ti”、“to”或“tu”。你可以放任意多的字元在中括弧中,但是請記住,只能匹配一個字元。[aeiou]看起來是五個字元,但它真實意義卻是“a”或”e“或”i“或”o“或”u“。如果字元連續出現,你也能在字元組中定義一個範圍。例如,為了搜尋在100到109的數字,模式應該用10[0-9]。例如,模式t[^o]就會匹配包含”t“並且後面緊跟的字元是非o的字元。

.匹配任一字元。p.p匹配pop,pup,pmp,[email protected]等等。

 \w匹配任意“word-like”字元,包括數字,字母,底線,不過不能匹配標點符號和其他字元。hello\w會匹配”hello_“,”hello9”和”helloo”,但不匹配”hello!”。

 \d 匹配數字,大部分情況下是[0-9]\d\d?:\d\d會匹配時間格式的字串,比如”9:30“和”12:45“。

 \b 匹配額外的字元,例如空格,標點符號。to\b 會匹配”to the moon”和“to!”中得“to”,但是不會匹配“tomorrow”。\b 用在整個單詞的匹配方面和方便。

 \s 會匹配空白字元,比如,空格,定位字元,分行符號。hello\s 會匹配“Well,hello there!”中的 “hello ”。

 ^用在一行的開始。記住,這個特殊的^不同於方括弧中的^!例如,^Hello 會匹配字串“Hello there”,而不會去匹配“He said Hello”。

 用在一行的結束,例如,the end$ 會匹配“It was the end” 而不會去匹配 “the end was near”。

 匹配 它之前的元素0次或多次。12*3  會匹配 13, 123, 1223, 122223, 和 1222222223。

 + 匹配 它之前的元素1次或多次. 12+3  會匹配  123, 1223, 122223, 和 1222222223。

 花括弧{}包含了匹配的最大和值最小個數。例如,10{1,2}1會匹配“101”和“1001”,而不會匹配“10001”,因為匹配的最小個數為1,最大個數為2。He[LI]{2,}o會匹配“HeLLo”和“HellLLLIo”和任意其他的“hello”添加多個L的變種,所以沒有限制,因為,最少的個數是2,最大的個數沒有設定。

 ? 匹配前面的子運算式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。

 {nn 是一個非負整數。匹配確定的 n 次。例如,‘o{2}‘ 不能匹配 "Bob" 中的 ‘o‘,但是能匹配 "food" 中的兩個 o。

 {n,} n 是一個非負整數。至少匹配n 次。例如,‘o{2,}‘ 不能匹配 "Bob" 中的 ‘o‘,但能匹配 "foooood" 中的所有 o。‘o{1,}‘ 等價於 ‘o+‘。‘o{0,}‘ 則等價於 ‘o*‘。

 {n,mm 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。劉, "o{1,3}" 將匹配 "fooooood" 中的前三個 o。‘o{0,1}‘ 等價於 ‘o?‘。請注意在逗號和兩個數之間不能有空格。

 ? 當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式儘可能少的匹配所搜尋的字串,而預設的貪婪模式則儘可能多的匹配所搜尋的字串。例如,對於字串 "oooo",‘o+?‘ 將匹配單個 "o",而 ‘o+‘ 將匹配所有 ‘o‘。

 x|y 匹配 x 或 y。例如,‘z|food‘ 能匹配 "z" 或 "food"。‘(z|f)ood‘ 則匹配 "zood" 或 "food"。

 [xyz]  字元集合。匹配所包含的任意一個字元。例如, ‘[abc]‘ 可以匹配 "plain" 中的 ‘a‘。

 [^xyz] 負值字元集合。匹配未包含的任一字元。例如, ‘[^abc]‘ 可以匹配 "plain" 中的‘p‘。

 [a-z] 字元範圍。匹配指定範圍內的任一字元。例如,‘[a-z]‘ 可以匹配 ‘a‘ 到 ‘z‘ 範圍內的任意小寫字母字元。

 [^a-z] 負值字元範圍。匹配任何不在指定範圍內的任一字元。例如,‘[^a-z]‘ 可以匹配任何不在 ‘a‘ 到 ‘z‘ 範圍內的任一字元。

 \b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, ‘er\b‘ 可以匹配"never" 中的 ‘er‘,但不能匹配 "verb" 中的 ‘er‘。

 \B 匹配非單詞邊界。‘er\B‘ 能匹配 "verb" 中的 ‘er‘,但不能匹配 "never" 中的 ‘er‘。

 \cx 匹配由x指明的控制字元。例如, \cM 匹配一個 Control-M 或斷行符號符。 x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 ‘c‘ 字元。

 \d 匹配一個數字字元。等價於 [0-9]。

 \D 匹配一個非數字字元。等價於 [^0-9]。

 \n 匹配一個分行符號。等價於 \x0a 和 \cJ。

 \s 匹配任何空白字元,包括空格、定位字元、換頁符等等。等價於 [ \f\n\r\t\v]。

 \S 匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。

 \w 匹配包括底線的任何單詞字元。等價於‘[A-Za-z0-9_]‘。

 \W 匹配任何非單詞字元。等價於 ‘[^A-Za-z0-9_]‘。

 

 

iosRegex

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.