JAVA正則表達式語法

正則表達式是由元字符和普通字符組成肿轨。所謂元字符就是類似于“*”、“蕊程?”之類的有意義的字符椒袍,所謂的普通字符就是字符串中常用的字符。將普通字符和元字符放在一對斜杠(/)中存捺,就可以組成一個正則表達式槐沼。

1曙蒸、匹配字符

最簡單的正則表達式就是字符本身的匹配,這種匹配方法相當于精確查找岗钩。

比如:/abc/? 纽窟,可以匹配到字符串“abc”(注意是匹配到字符串“abc”,不是單個字符“a”或“b”或“c”)兼吓;


正則表達式中有很多字符有特殊意義臂港,要匹配單個的字符(比如“?”)视搏,需要在轉義字符前加上反斜杠“\”审孽,

正則表達式中有很多轉義字符:“\!”,“\$”浑娜,“\^”佑力,“\*”,“\+”筋遭,“\=”打颤,“\|”,“\.”漓滔,“\?”编饺,“\\”,“\/”响驴,“\(”透且,“\)”,“\[”豁鲤,“\]”秽誊,“\{”,“\}”琳骡,“\o”养距,“\t”,“\n”日熬,“\v”,“\f”肾胯,“\r”竖席,“\xnn”,“\uxxxx”敬肚,“\cX”毕荐。


2、字符類

字符類在正則表達式中可以代表一系列字符艳馒,而不是只能代表一個字符或一個子字符串憎亚,字符串類是以中括號作為分界符的员寇。

比如:/[ABC]/?? ,可以匹配到“A”或“B”或“C”單個字符第美;假如要匹配的字符串為“JAVASCRIPT”蝶锋,只會匹配到第一個“A”(因為除非使用全局模式標志,在完成第一次匹配后不會再進行后面的匹配了)什往;

使用字符類還可以制定一系列字符:/[A-Z]/? //可以匹配到字母A到Z扳缕,/[a-z]/? //可以匹配到字母a到z,/[A-Za-z]/? //可以匹配到字母A到Z和字母a到z别威,/[0-9]/? //可以匹配到數字0到9躯舔,/[A-Za-z0-9]/? //可以匹配到字母A到Z、字母a到z省古、數字0到0粥庄,/[A-D159]/? //可以匹配到字母A到D和數字1、5豺妓、9惜互;

除了要將匹配的字符放在[]中外,字符類還定義了一些特殊的字符科侈,可以更加靈活地匹配到字符串载佳;比如:字符類“XYZ”:字符集,可以匹配到中括號中的字符臀栈;字符類“^”:非字符集蔫慧,可以匹配到非中括號中的任何字符;字符類“.”:匹配除了答行符和其他Unicode行符之外的所有字符权薯;字符類“\w”:匹配任何ASCII單字字符姑躲,相當于[a-zA-Z0-9];字符類“\W”:匹配到所有ASCII單字字符之外的字符盟蚣,相當于[^a-zA-Z0-9]黍析;字符類“\s”:匹配任何Unicode空白符,相當于[\f\n\r\t\v\u00A0\u2028\u2029]屎开;字符類“\S”:匹配任何Unicode空白符之外的字符相當于[^\f\n\r\t\v\u00A0\u2028\u2029]阐枣;字符類“\d”:匹配任何數字,相當于[0-9]奄抽;字符類“\D”:匹配任何數字之外的字符蔼两,相當于[^0-9]。

3逞度、界定符

假設有一個字符串內容為“BaaaaaBaaaaaB”额划,要求匹配到第一個“B”和最后一個“B”,則可以使用界定符档泽;

界定符“^”可以匹配到一行字符的開頭俊戳,“/^B/”可以匹配到第一個“B”揖赴;界定符“$”可以匹配到一行字符的結尾,“/B$/”可以匹配到最后一個“B”抑胎;

更多界定符:界定符“^”:匹配行首燥滑,多用于多行文本搜索;界定符“$”:匹配行尾圆恤,多用于多行文本搜索突倍;界定符“\b”:匹配單詞的邊界,多用于英文文本盆昙;界定符“\B”:與\b相反羽历,匹配到一個非單詞的邊界。

4淡喜、選擇符

假設要在一個字符串中查找子字符串A和子字符串B秕磷,在正則表達式中用一個選擇符“|”,使用這個選擇符可以匹配多個子字符串炼团;例如字符串1“AAAaaaaaaaBBB”澎嚣、字符串2“AAAaaaaaaa”、字符串3“BBBaaaaaaa”瘟芝,使用/AAA|BBB/都可以去匹配易桃;但是匹配字符串1的話,只會匹配到AAA,因為除非使用全局模式標志锌俱,在完成第一次匹配后不會再進行后面的匹配了晤郑,包括字符和字符類以及所有的匹配方式都是這樣。

5贸宏、重復類

字符類都只能匹配一個字符造寝,如“[0-9]”只能匹配數字0到9,如果要匹配數字10到99就不行了吭练;正則表達式提供了重復類來匹配這種重復的現象诫龙;比如重復類“{n}”可以將前一項重復n次;

/[\d]{2}/????? 將“[\d]”重復兩次鲫咽,相當于“/[\d][\d]/”

/ab{2}/????? 將“b”重復兩次签赃,相當于“/abb/”

在正則表達式“/[\d]{2}/”中可以匹配到00到99之間的數字,但如果0到99之間的數字需要用“/[\d]|[\d]{2}/”

/[\d]{1,3}/????? 將“[\d]”重復1到3次分尸,相當于“/[\d]/”或“/[\d][\d]/”或“/[\d][\d][\d]/”

/ab{1,3}/????? 將“b”重復1到3次姊舵,相當于“/ab/”或“/abb/”或“/abbb/”

更多重復類:1、{n}:匹配前一項n次寓落;2、{n,m}:匹配前一項n到m次荞下;3伶选、{n,}:匹配前一項至少n次史飞;4、?:酦醅前一項0次或者1次仰税,相當于{0,1}构资;5、+:匹配前一項至少1次陨簇,相當于{1,}吐绵;6、*:匹配前一項0次貨多次河绽,相當于{0,}己单;

6、分組

假設要匹配字符串“java”或“javascript”耙饰,除了選擇符纹笼,還可以使用小括號將字符串分組來實現,分了組的字符串可以看成一個整體苟跪;

比如:/java(script)?/廷痘,“script”被小括號括起來視為一個整體,又因為重復類“?”會將整個“script”重復0次或者1次件已,所以可以匹配字符串“java”或“javascript”笋额。

7、引用

在正則表達式中篷扩,會給每一個分組分配一個編號兄猩,使用編號可以將匹配到的內容在正則表達式中作進一步的處理;編號方式為:從正則表達式左側開始瞻惋,第一個分組編號為1厦滤,第二個為2,以此類推歼狼;

分組編號后掏导,可以使用“\n”來引用分組匹配的字符串;如“\1”位第一個分組匹配的字符串羽峰;/(java)?Script\1:趟咆,該正則表達式可以匹配到“javascriptjava”或“script”;

在某些情況下梅屉,可能要將匹配到的字符串分組值纱,但不記錄該組匹配的字符串,那么久可以使用“(?)”符號類進行分組坯汤,比如:/(?:java){0,1}(Script){0,1}\1/虐唠,可以匹配到“java”或“JavaScriptScript”。

8惰聂、其他匹配

正則表達式中海油兩種選擇性匹配:

x(?=y):只有x后面緊跟著y才匹配疆偿;

x(?!y):只有x后面不是y才匹配咱筛。

9、匹配規(guī)則

正則表達式在匹配字符串時杆故,只要遇上可以匹配的內容就會停止匹配迅箩;如果想要繼續(xù)匹配的話,就必須在正則表達式后加上標志符“g”处铛,如/a/g饲趋;

更多標志符:1、i:匹配時不區(qū)分大小寫撤蟆;2奕塑、g:匹配能匹配的所有字符,而不是在匹配第一個后就停止匹配枫疆;3爵川、m:執(zhí)行多行匹配模式,也就是使用“^”和“$”來匹配開頭和結尾息楔。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末寝贡,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子值依,更是在濱河造成了極大的恐慌圃泡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愿险,死亡現場離奇詭異颇蜡,居然都是意外死亡,警方通過查閱死者的電腦和手機辆亏,發(fā)現死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門风秤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扮叨,你說我怎么就攤上這事缤弦。” “怎么了彻磁?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵碍沐,是天一觀的道長。 經常有香客問我衷蜓,道長累提,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任磁浇,我火速辦了婚禮斋陪,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己鳍贾,他們只是感情好鞍匾,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著骑科,像睡著了一般。 火紅的嫁衣襯著肌膚如雪构拳。 梳的紋絲不亂的頭發(fā)上咆爽,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音置森,去河邊找鬼斗埂。 笑死,一個胖子當著我的面吹牛凫海,可吹牛的內容都是我干的呛凶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼行贪,長吁一口氣:“原來是場噩夢啊……” “哼漾稀!你這毒婦竟也來了?” 一聲冷哼從身側響起建瘫,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤崭捍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啰脚,有當地人在樹林里發(fā)現了一具尸體殷蛇,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年橄浓,在試婚紗的時候發(fā)現自己被綠了粒梦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡荸实,死狀恐怖匀们,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情泪勒,我是刑警寧澤昼蛀,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站圆存,受9級特大地震影響叼旋,放射性物質發(fā)生泄漏。R本人自食惡果不足惜沦辙,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一辜窑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧都哭,春花似錦、人聲如沸延欠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽由捎。三九已至,卻和暖如春饿凛,著一層夾襖步出監(jiān)牢的瞬間狞玛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工涧窒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留心肪,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓纠吴,卻偏偏與公主長得像硬鞍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子戴已,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容