Java 正則表達式

在其他語言中场晶,\\表示:我想要在正則表達式中插入一個普通的(字面上的)反斜杠伪冰,請不要給它任何特殊的意義蹦渣。

在 Java 中哄芜,\\表示:我要插入一個正則表達式的反斜線,所以其后的字符具有特殊的意義柬唯。

所以认臊,在其他的語言中,一個反斜杠\就足以具有轉義的作用权逗,而在正則表達式中則需要有兩個反斜杠才能被解析為其他語言中的轉義作用美尸。也可以簡單的理解在正則表達式中,兩個\代表其他語言中的一個\斟薇,這也就是為什么表示一位數字的正則表達式是\\d师坎,而表示一個普通的反斜杠是\\\\。

\

將下一字符標記為特殊字符堪滨、文本胯陋、反向引用或八進制轉義符。例如袱箱,"n"匹配字符"n"遏乔。"\n"匹配換行符。序列"\\\\"匹配"\"发笔,"\\("匹配"("盟萨。

^

匹配輸入字符串開始的位置。如果設置了RegExp對象的Multiline屬性了讨,^ 還會與"\n"或"\r"之后的位置匹配捻激。

$

匹配輸入字符串結尾的位置制轰。如果設置了RegExp對象的Multiline屬性,$ 還會與"\n"或"\r"之前的位置匹配胞谭。

*

零次或多次匹配前面的字符或子表達式垃杖。例如,zo* 匹配"z"和"zoo"丈屹。* 等效于 {0,}调俘。

+

一次或多次匹配前面的字符或子表達式。例如旺垒,"zo+"與"zo"和"zoo"匹配彩库,但與"z"不匹配。+ 等效于 {1,}袖牙。

?

零次或一次匹配前面的字符或子表達式侧巨。例如,"do(es)?"匹配"do"或"does"中的"do"鞭达。? 等效于 {0,1}司忱。

{n}

n是非負整數。正好匹配n次畴蹭。例如坦仍,"o{2}"與"Bob"中的"o"不匹配,但與"food"中的兩個"o"匹配叨襟。

{n,}

n是非負整數繁扎。至少匹配n次。例如糊闽,"o{2,}"不匹配"Bob"中的"o"梳玫,而匹配"foooood"中的所有 o。"o{1,}"等效于"o+"右犹。"o{0,}"等效于"o*"提澎。

{n,m}

Mn是非負整數,其中n<=m念链。匹配至少n次盼忌,至多m次。例如掂墓,"o{1,3}"匹配"fooooood"中的頭三個 o谦纱。'o{0,1}' 等效于 'o?'。注意:您不能將空格插入逗號和數字之間君编。

?

當此字符緊隨任何其他限定符(*跨嘉、+、?吃嘿、{n}祠乃、{n,}窘游、{n,m})之后時,匹配模式是"非貪心的"跳纳。"非貪心的"模式匹配搜索到的、盡可能短的字符串贪嫂,而默認的"貪心的"模式匹配搜索到的寺庄、盡可能長的字符串。例如力崇,在字符串"oooo"中斗塘,"o+?"只匹配單個"o",而"o+"匹配所有"o"亮靴。

.

匹配除"\r\n"之外的任何單個字符馍盟。若要匹配包括"\r\n"在內的任意字符,請使用諸如"[\s\S]"之類的模式茧吊。

(pattern)

匹配pattern并捕獲該匹配的子表達式贞岭。可以使用$0…$9屬性從結果"匹配"集合中檢索捕獲的匹配搓侄。若要匹配括號字符 ( )瞄桨,請使用"\("或者"\)"。

(?:pattern)

匹配pattern但不捕獲該匹配的子表達式讶踪,即它是一個非捕獲匹配芯侥,不存儲供以后使用的匹配。這對于用"or"字符 (|) 組合模式部件的情況很有用乳讥。例如柱查,'industr(?:y|ies) 是比 'industry|industries' 更經濟的表達式。

(?=pattern)

執(zhí)行正向預測先行搜索的子表達式云石,該表達式匹配處于匹配pattern的字符串的起始點的字符串唉工。它是一個非捕獲匹配,即不能捕獲供以后使用的匹配留晚。例如酵紫,'Windows (?=95|98|NT|2000)' 匹配"Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的"Windows"错维。預測先行不占用字符奖地,即發(fā)生匹配后,下一匹配的搜索緊隨上一匹配之后赋焕,而不是在組成預測先行的字符后参歹。

(?!pattern)

執(zhí)行反向預測先行搜索的子表達式,該表達式匹配不處于匹配pattern的字符串的起始點的搜索字符串隆判。它是一個非捕獲匹配犬庇,即不能捕獲供以后使用的匹配僧界。例如,'Windows (?!95|98|NT|2000)' 匹配"Windows 3.1"中的 "Windows"臭挽,但不匹配"Windows 2000"中的"Windows"捂襟。預測先行不占用字符,即發(fā)生匹配后欢峰,下一匹配的搜索緊隨上一匹配之后葬荷,而不是在組成預測先行的字符后。

x|y

匹配xy纽帖。例如宠漩,'z|food' 匹配"z"或"food"丙号。'(z|f)ood' 匹配"zood"或"food"政鼠。

[xyz]

字符集。匹配包含的任一字符隶垮。例如室囊,"[abc]"匹配"plain"中的"a"雕崩。

[^xyz]

反向字符集。匹配未包含的任何字符融撞。例如晨逝,"[^abc]"匹配"plain"中"p","l"懦铺,"i"捉貌,"n"。

[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]誊册。

\f

換頁符匹配。等效于 \x0c 和 \cL暖璧。

\n

換行符匹配案怯。等效于 \x0a 和 \cJ。

\r

匹配一個回車符澎办。等效于 \x0d 和 \cM嘲碱。

\s

匹配任何空白字符,包括空格局蚀、制表符麦锯、換頁符等。與 [?\f\n\r\t\v] 等效琅绅。

\S

匹配任何非空白字符扶欣。與 [^?\f\n\r\t\v] 等效。

\t

制表符匹配千扶。與 \x09 和 \cI 等效料祠。

\v

垂直制表符匹配。與 \x0b 和 \cK 等效澎羞。

\w

匹配任何字類字符髓绽,包括下劃線。與"[A-Za-z0-9_]"等效妆绞。

\W

與任何非單詞字符匹配顺呕。與"[^A-Za-z0-9_]"等效。

\xn

匹配n括饶,此處的n是一個十六進制轉義碼株茶。十六進制轉義碼必須正好是兩位數長。例如图焰,"\x41"匹配"A"忌卤。"\x041"與"\x04"&"1"等效。允許在正則表達式中使用 ASCII 代碼楞泼。

\num

匹配num驰徊,此處的num是一個正整數笤闯。到捕獲匹配的反向引用。例如棍厂,"(.)\1"匹配兩個連續(xù)的相同字符颗味。

\n

標識一個八進制轉義碼或反向引用。如果 \n前面至少有n個捕獲子表達式牺弹,那么n是反向引用浦马。否則,如果n是八進制數 (0-7)张漂,那么n是八進制轉義碼晶默。

\nm

標識一個八進制轉義碼或反向引用。如果 \nm前面至少有nm個捕獲子表達式航攒,那么nm是反向引用磺陡。如果 \nm前面至少有n個捕獲,則n是反向引用漠畜,后面跟有字符m币他。如果兩種前面的情況都不存在,則 \nm匹配八進制值nm憔狞,其中nm是八進制數字 (0-7)蝴悉。

\nml

n是八進制數 (0-3),ml是八進制數 (0-7) 時瘾敢,匹配八進制轉義碼nml拍冠。

\un

匹配n,其中n是以四位十六進制數表示的 Unicode 字符簇抵。例如倦微,\u00A9 匹配版權符號 (?)。

注:根據 Java Language Specification 的要求正压,Java 源代碼的字符串中的反斜線被解釋為 Unicode 轉義或其他字符轉義欣福。因此必須在字符串字面值中使用兩個反斜線,表示正則表達式受到保護焦履,不被 Java 字節(jié)碼編譯器解釋拓劝。例如,當解釋為正則表達式時嘉裤,字符串字面值 "\b" 與單個退格字符匹配郑临,而 "\\b" 與單詞邊界匹配。字符串字面值 "\(hello\)" 是非法的屑宠,將導致編譯時錯誤厢洞;要與字符串 (hello) 匹配,必須使用字符串字面值 "\\(hello\\)"。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末躺翻,一起剝皮案震驚了整個濱河市丧叽,隨后出現的幾起案子,更是在濱河造成了極大的恐慌公你,老刑警劉巖踊淳,帶你破解...
    沈念sama閱讀 211,423評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異陕靠,居然都是意外死亡迂尝,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,147評論 2 385
  • 文/潘曉璐 我一進店門剪芥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垄开,“玉大人,你說我怎么就攤上這事税肪「榷悖” “怎么了?”我有些...
    開封第一講書人閱讀 157,019評論 0 348
  • 文/不壞的土叔 我叫張陵寸认,是天一觀的道長。 經常有香客問我串慰,道長偏塞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,443評論 1 283
  • 正文 為了忘掉前任邦鲫,我火速辦了婚禮灸叼,結果婚禮上,老公的妹妹穿的比我還像新娘庆捺。我一直安慰自己古今,他們只是感情好,可當我...
    茶點故事閱讀 65,535評論 6 385
  • 文/花漫 我一把揭開白布滔以。 她就那樣靜靜地躺著捉腥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪你画。 梳的紋絲不亂的頭發(fā)上抵碟,一...
    開封第一講書人閱讀 49,798評論 1 290
  • 那天,我揣著相機與錄音坏匪,去河邊找鬼拟逮。 笑死,一個胖子當著我的面吹牛适滓,可吹牛的內容都是我干的敦迄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,941評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罚屋!你這毒婦竟也來了苦囱?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,704評論 0 266
  • 序言:老撾萬榮一對情侶失蹤沿后,失蹤者是張志新(化名)和其女友劉穎沿彭,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體尖滚,經...
    沈念sama閱讀 44,152評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡喉刘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,494評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了漆弄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睦裳。...
    茶點故事閱讀 38,629評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖撼唾,靈堂內的尸體忽然破棺而出廉邑,到底是詐尸還是另有隱情,我是刑警寧澤倒谷,帶...
    沈念sama閱讀 34,295評論 4 329
  • 正文 年R本政府宣布蛛蒙,位于F島的核電站,受9級特大地震影響渤愁,放射性物質發(fā)生泄漏牵祟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,901評論 3 313
  • 文/蒙蒙 一抖格、第九天 我趴在偏房一處隱蔽的房頂上張望诺苹。 院中可真熱鬧,春花似錦雹拄、人聲如沸收奔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坪哄。三九已至,卻和暖如春势篡,著一層夾襖步出監(jiān)牢的瞬間损姜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,978評論 1 266
  • 我被黑心中介騙來泰國打工殊霞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留摧阅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,333評論 2 360
  • 正文 我出身青樓绷蹲,卻偏偏與公主長得像棒卷,于是被迫代替她去往敵國和親顾孽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,499評論 2 348

推薦閱讀更多精彩內容

  • Java的正則表達式講解:(為了能看清比规,本文正則表達式用中文的句號代替英文句點) 英文句點符號:匹配單個任意字符若厚。...
    紅姑娘閱讀 4,349評論 0 2
  • 表達式意義: 1.字符 x 字符 x。例如a表示字符a {Java學習資料免費分享微信:tangniu5206...
    尚學先生閱讀 331評論 0 0
  • 1匹配驗證-驗證Email是否正確 2在字符串中查詢字符或者字符串 3常用正則表達式 規(guī)則 正則表達式語法一個或...
    大赟哥閱讀 470評論 0 0
  • \ :將下一字符標記為特殊字符蜒什、文本测秸、反向引用或八進制轉義符。例如灾常,"n"匹配字符"n"霎冯。"\n"匹配換行符。序列...
    小沙鷹168閱讀 536評論 0 1
  • 周末的時候回家,在家里遇到了初中同學雕什,她是嫁到了我們村里缠俺。 她跟媽媽在講話,第一眼贷岸,我沒有認出她壹士,過了一會,我多看...
    小米的曦閱讀 294評論 0 0