java下正則匹配規則

2021-09-25 03:18:01 字數 2202 閱讀 7745

在編寫處理字串的程式或網頁時,經常會有查詢符合某些複雜規則的字串的需要。 正規表示式就是用於描述這些規則的工具。

\b是正規表示式規定的乙個特殊**(好吧,某些人叫它 元字元,metacharacter),代表著單詞的開頭或結尾,也就是單詞的分界處(\bhi\b) 。雖然通常英文的單詞是由空格,標點符號或者換行來分隔的,但是\b並不匹配這些單詞分隔字元中的任何乙個,它只匹配乙個位置(假如你要找的是hi後面不遠處跟著乙個lucy,你應該用\bhi\b.*\blucy\b)。

^(和數字6在同乙個鍵位上的符號)和$都匹配乙個位置,這和\b有點類似。 ^匹配你要用來查詢的字串的開頭,$匹配結尾。和忽略大小寫的選項類似,有些正規表示式處理工具還有乙個處理多行的選項。如果選中了這個選項,^和$的意義就變成了匹配行的開始處和結束處。

.是另乙個元字元,匹配除了換行符(『\n』)以外的任意字元。

*同樣是元字元,代表數量——它指定*前邊的內容可以連續重複出現任意次以使整個表示式得到匹配。(重複0次到n次)

+是和*類似的元字元,不同的是 *匹配重複任意次(可能是0次),而+則匹配重複1次或更多次(重複1次到n次)。

? 重複0次或1次

重複n次

重複n次或更多次

重複n次到m次

\w 匹配任意不是字母,數字,下劃線,漢字的字元

\s 匹配任意不是空白符的字元

\d 匹配任意非數字的字元

\b 匹配不是單詞開頭或結束的位置

[^x] 匹配除了x以外的任意字元

[^aeiou] 匹配除了aeiou這幾個字母以外的任意字元(]+>匹配用尖括號括起來的以a開頭的字串。)

\d,匹配乙個數字。在使用過程中為了避免重複,可以\d表示:\d 必須連續重複匹配2次(8次)。\d 則是重複的次數不能少於5次,不能多於12次,否則都不匹配。

\s匹配任意的空白符,包括空格,製表符(tab),換行符,中文全形空格等 。

\w匹配字母或數字或下劃線或漢字

\ 取消這些元字元的特殊意義eg:\.、\\

匹配沒有預定義元字元的字元集合,eg:[aeiou]就匹配任何乙個英文母音字母 ,[.?!] 匹配標點符號(.或?或!) ,[0-9]代表的含意與\d就是完全一致的:一位數字;同理[a-z0-9a-z_]也完全等同於\w

| 分枝條件,將不同的規則分隔開。匹配分枝條件時,將會從左到右地測試每個條件,如果滿足了某個分枝的話,就不會去再管其它的條件了。\d-\d|\d與\d|\d-\d不同,\d|\d-\d只會匹配5位的郵編(以及9位郵編的前5位)。

()小括號來指定子表示式(也叫做分組),ip位址(ip位址中每個數字都不能大於255)的正規表示式:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.)(2[0-4]\d|25[0-5]|[01]?\d\d?)

後向引用用於重複搜尋前面某個分組匹配的文字。從左向右,以分組的左括號為標誌,第乙個出現的分組的組號為1,第二個為2,以此類推。\b(\w+)\b\s+\1\b可以用來匹配重複的單詞,\1代表分組1匹配的文字,像go go, 或者kitty kitty。要指定乙個子表示式的組名,請使用這樣的語法:(?\w+)(或者把尖括號換成'也行:(?'word'\w+)),這樣就把\w+的組名指定為word了。要反向引用這個分組捕獲的內容,你可以使用\k,所以上乙個例子也可以寫成這樣:\b(?\w+)\b\s+\k\b 。

(exp) 匹配exp,並捕獲文字到自動命名的組裡

(?exp)匹配exp,並捕獲文字到名稱為name的組裡,也可以寫成(?'name'exp)

(?:exp) 匹配exp,不捕獲匹配的文字,也不給此分組分配組號

(?=exp) 匹配exp前面的位置,\b\w+(?=ing\b),匹配以ing結尾的單詞的前面部分(除了ing以外的部分)

(?<=exp) 匹配exp後面的位置,(?<=\bre)\w+\b,會匹配以re開頭的單詞的後半部分(除了re以外的部分)

(?!exp) 匹配後面跟的不是exp的位置

(?(?#comment)這種型別的分組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀

貪婪匹配:當正規表示式中包含能接受重複的限定符時,通常的行為是(在使整個表示式能得到匹配的前提下)匹配盡可能多的字元。

懶惰匹配:匹配盡可能少的字元,在重複匹配符(*,+等)後加個?。.*?就意味著匹配任意數量的重複,但是在能使整個匹配成功的前提下使用最少的重複。eg:*?重複任意次,但盡可能少重複;+?重複1次或更多次,但盡可能少重複;??重複0次或1次,但盡可能少重複;?重複n到m次,但盡可能少重複;?重複n次以上,但盡可能少重複.

正則匹配規則

1.字面量 眼見為實 2.元字元 反斜槓 轉義 號 需要轉義 脫字元 也需要轉義 除了 和 以下字元都是元字元 如果想使用其字面意義 需要轉義 正則中需要用反斜槓轉義的字元 3.匹配字串的開始位置 4.匹配字串的結尾位置 5.字元 匹配除回車 r 換行 n 行分隔符 u2028 段分隔符 u2029...

Android 正則匹配規則

常用元字元 說明 匹配除換行符以外的任意字元 w匹配字母或數字或下劃線 s匹配任意的空白符 d匹配數字 b匹配單詞的開始或結束 匹配字串的開始 匹配字串的結束 常用限定符 語法說明 重複零次或更多次 重複一次或更多次 重複零次或一次 重複n次 重複n次或更多次 重複n到m次 常用反義詞 語法 說明 ...

nginx location正則匹配規則

示例 location location js js順序 優先順序 location location 完整路徑 location 路徑 location 正則順序 location 部分起始路徑 上面的匹配結果 按照上面的location寫法,以下的匹配示例成立 實際使用建議 所以實際使用中,個人...