藍橋杯_1正則表達式

最近小生,在練習藍橋杯的習題,故有同路者共勉鳄厌!

圖片.png

故:
Java正則表達式

1.字符

x 字符 x。例如a表示字符a
\ 反斜線字符妈踊。在書寫時要寫為\\了嚎。(注意:因為java在第一次解析時,把\\解析成正則表達式\,在第二次解析時再解析為\廊营,所以凡是不是1.1列舉到的轉(zhuǎn)義字符歪泳,包括1.1的\,而又帶有\(zhòng)的都要寫兩次)
\0n 帶有八進制值 0的字符 n (0 <= n <= 7)
\0nn 帶有八進制值 0的字符 nn (0 <= n <= 7)
\0mnn 帶有八進制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 帶有十六進制值 0x的字符 hh
\uhhhh 帶有十六進制值 0x的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(換行)符 ('\u000A')
\r 回車符 ('\u000D')
\f 換頁符 ('\u000C')
\a 報警 (bell) 符 ('\u0007')
\e 轉(zhuǎn)義符 ('\u001B')
\cx 對應于 x 的控制符
2.字符類
[abc] a露筒、b或 c(簡單類)呐伞。例如[egd]表示包含有字符e、g或d慎式。
[^abc] 任何字符伶氢,除了 a、b或 c(否定)瘪吏。例如[^egd]表示不包含字符e癣防、g或d。
[a-zA-Z] a到 z或 A到 Z肪虎,兩頭的字母包括在內(nèi)(范圍)
[a-d[m-p]] a到 d或 m到 p:[a-dm-p](并集)
[a-z&&[def]] d劣砍、e或 f(交集)
[a-z&&[^bc]] a到 z,除了 b和 c:[ad-z](減去)
[a-z&&[^m-p]] a到 z扇救,而非 m到 p:[a-lq-z](減去)
3.預定義字符類(注意反斜杠要寫兩次刑枝,例如\d寫為\d)任何字符

(與行結(jié)束符可能匹配也可能不匹配)
\d 數(shù)字:[0-9]
\D 非數(shù)字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 單詞字符:[a-zA-Z_0-9]
\W 非單詞字符:[^\w]
4.POSIX 字符類(僅 US-ASCII)(注意反斜杠要寫兩次香嗓,例如\p{Lower}寫為\p{Lower})
\p{Lower} 小寫字母字符:[a-z]。
\p{Upper} 大寫字母字符:[A-Z]
\p{ASCII} 所有 ASCII:[\x00-\x7F]
\p{Alpha} 字母字符:[\p{Lower}\p{Upper}]
\p{Digit} 十進制數(shù)字:[0-9]
\p{Alnum} 字母數(shù)字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 標點符號:!"#$%&'()+,-./:;<=>?@[]^_`{|}~
\p{Graph} 可見字符:[\p{Alnum}\p{Punct}]
\p{Print} 可打印字符:[\p{Graph}\x20]
\p{Blank} 空格或制表符:[ \t]
\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
\p{XDigit} 十六進制數(shù)字:[0-9a-fA-F]
\p{Space} 空白字符:[ \t\n\x0B\f\r]
5.java.lang.Character 類(簡單的 java 字符類型)
\p{javaLowerCase} 等效于 java.lang.Character.isLowerCase()
\p{javaUpperCase} 等效于 java.lang.Character.isUpperCase()
\p{javaWhitespace} 等效于 java.lang.Character.isWhitespace()
\p{javaMirrored} 等效于 java.lang.Character.isMirrored()
6.Unicode 塊和類別的類
\p{InGreek} Greek 塊(簡單塊)中的字符
\p{Lu} 大寫字母(簡單類別)
\p{Sc} 貨幣符號
\P{InGreek} 所有字符装畅,Greek 塊中的除外(否定)
[\p{L}&&[^\p{Lu}]] 所有字母靠娱,大寫字母除外(減去)
7.邊界匹配器
^ 行的開頭,請在正則表達式的開始處使用掠兄。例如:(abc)表示以abc開頭的字符串像云。注意編譯的時候要設(shè)置參數(shù)MULTILINE,如 Pattern p = Pattern.compile(regex,Pattern.MULTILINE);
$ 行的結(jié)尾蚂夕,請在正則表達式的結(jié)束處使用迅诬。例如:(^bca).
(abc$)表示以bca開頭以abc結(jié)尾的行。
\b 單詞邊界婿牍。例如\b(abc)表示單詞的開始或結(jié)束包含有abc,(abcjj侈贷、jjabc 都可以匹配)
\B 非單詞邊界。例如\B(abc)表示單詞的中間包含有abc,(jjabcjj匹配而jjabc等脂、abcjj不匹配)
\A 輸入的開頭
\G 上一個匹配的結(jié)尾(個人感覺這個參數(shù)沒什么用)俏蛮。例如\Gdog表示在上一個匹配結(jié)尾處查找dog如果沒有的話則從開頭查找,注意如果開頭不是dog則不能匹配。
\Z 輸入的結(jié)尾上遥,僅用于最后的結(jié)束符(如果有的話)
行結(jié)束符 是一個或兩個字符的序列搏屑,標記輸入字符序列的行結(jié)尾。
以下代碼被識別為行結(jié)束符:
‐新行(換行)符 ('\n')粉楚、
‐后面緊跟新行符的回車符 ("\r\n")辣恋、
‐單獨的回車符 ('\r')、
‐下一行字符 ('\u0085')模软、
‐行分隔符 ('\u2028') 或
‐段落分隔符 ('\u2029)抑党。
\z 輸入的結(jié)尾
當編譯模式時,可以設(shè)置一個或多個標志撵摆,例如
Pattern pattern = Pattern.compile(patternString,Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
下面六個標志都是支持的:
‐CASE_INSENSITIVE:匹配字符時與大小寫無關(guān),該標志默認只考慮US ASCII字符害晦。
‐UNICODE_CASE:當與CASE_INSENSITIVE結(jié)合時特铝,使用Unicode字母匹配
‐MULTILINE:^和$匹配一行的開始和結(jié)尾,而不是整個輸入
‐UNIX_LINES: 當在多行模式下匹配^和$時壹瘟,只將'\n'看作行終止符
‐DOTALL: 當使用此標志時鲫剿,.符號匹配包括行終止符在內(nèi)的所有字符
‐CANON_EQ: 考慮Unicode字符的規(guī)范等價
8.Greedy 數(shù)量詞
X? X,一次或一次也沒有
X* X稻轨,零次或多次
X+ X灵莲,一次或多次
X{n} X,恰好 n 次
X{n,} X殴俱,至少 n 次
X{n,m} X政冻,至少 n 次枚抵,但是不超過 m 次
9.Reluctant 數(shù)量詞
X?? X,一次或一次也沒有
X? X明场,零次或多次
X+? X汽摹,一次或多次
X{n}? X,恰好 n 次
X{n,}? X苦锨,至少 n 次
X{n,m}? X逼泣,至少 n 次,但是不超過 m 次
10.Possessive 數(shù)量詞
X?+ X舟舒,一次或一次也沒有
X
+ X拉庶,零次或多次
X++ X,一次或多次
X{n}+ X秃励,恰好 n 次
X{n,}+ X氏仗,至少 n 次
X{n,m}+ X,至少 n 次莺治,但是不超過 m 次
Greedy廓鞠,Reluctant,Possessive的區(qū)別在于:(注意僅限于進行.等模糊處理時)
greedy量 詞被看作“貪婪的”谣旁,因為它第一次就讀入整個被模糊匹配的字符串床佳。如果第一個匹配嘗試(整個輸入字符串)失敗,匹配器就會在被匹配字符串中的最后一位后退一個字符并且再次嘗試榄审,重復這個過程砌们,直到找到匹配或者沒有更多剩下的字符可以后退為止。根據(jù)表達式中使用的量詞搁进,它最后試圖匹配的內(nèi)容是1 個或者0個字符浪感。
但是,reluctant量詞采取相反的方式:它們從被匹配字符串的開頭開始饼问,然后逐步地一次讀取一個字符搜索匹配影兽。它們最后試圖匹配的內(nèi)容是整個輸入字符串。
最后莱革,possessive量詞總是讀完整個輸入字符串峻堰,嘗試一次(而且只有一次)匹配。和greedy量詞不同盅视,possessive從不后退捐名。
11.Logical 運算符
XY X 后跟 Y
X|Y X 或 Y
(X) X,作為捕獲組闹击。例如(abc)表示把abc作為一個整體進行捕獲
12.Back 引用
\n 任何匹配的 nth捕獲組
捕獲組可以通過從左到右計算其開括號來編號镶蹋。例如,在表達式 ((A)(B(C)))中,存在四個這樣的組:
1 ((A)(B(C)))
2 \A
3 (B(C))
4 (C)
在表達式中可以通過\n來對相應的組進行引用贺归,例如(ab)34\1就表示ab34ab淆两,(ab)34(cd)\1\2就表示ab34cdabcd。
13.引用
\ Nothing牧氮,但是引用以下字符
\Q Nothing琼腔,但是引用所有字符,直到 \E踱葛。QE之間的字符串會原封不動的使用(1.1中轉(zhuǎn)義字符的除外)丹莲。例如, ab\Q{|}\\E
可以匹配ab{|}\
\E Nothing,但是結(jié)束從 \Q開始的引用
14.特殊構(gòu)造(非捕獲)
(?:X) X尸诽,作為非捕獲組
(?idmsux-idmsux) Nothing甥材,但是將匹配標志由 on 轉(zhuǎn)為 off。比如:表達式 (?i)abc(?-i)def 這時性含,(?i) 打開不區(qū)分大小寫開關(guān)洲赵,abc 匹配
idmsux說明如下:
‐i CASE_INSENSITIVE :US-ASCII 字符集不區(qū)分大小寫。(?i)
‐d UNIX_LINES : 打開UNIX換行符
‐m MULTILINE :多行模式(?m)
UNIX下?lián)Q行為\n
WINDOWS下?lián)Q行為\r\n(?s)
‐u UNICODE_CASE : Unicode 不區(qū)分大小寫商蕴。(?u)
‐x COMMENTS :可以在pattern里面使用注解叠萍,忽略pattern里面的whitespace,以及"#"一直到結(jié)尾(#后面為注解)绪商。(?x)例如(?x)abc#asfsdadsa可以匹配字符串a(chǎn)bc
(?idmsux-idmsux:X) X苛谷,作為帶有給定標志 on - off 的非捕獲組。與上面的類似格郁,上面的表達式腹殿,可以改寫成為:(?i:abc)def,或者 (?i)abc(?-i:def)
(?=X) X例书,通過零寬度的正 lookahead锣尉。零寬度正先行斷言,僅當子表達式 X 在 此位置的右側(cè)匹配時才繼續(xù)匹配决采。例如自沧,\w+(?=\d) 表示字母后面跟數(shù)字,但不捕獲數(shù)字(不回溯)
(?!X) X树瞭,通過零寬度的負 lookahead暂幼。零寬度負先行斷言。僅當子表達式 X 不在 此位置的右側(cè)匹配時才繼續(xù)匹配移迫。例如,\w+(?!\d) 表示字母后面不跟數(shù)字管行,且不捕獲數(shù)字厨埋。
(?<=X) X,通過零寬度的正 lookbehind捐顷。零寬度正后發(fā)斷言荡陷。僅當子表達式 X 在 此位置的左側(cè)匹配時才繼續(xù)匹配雨效。例如,(?<=19)99 表示99前面是數(shù)字19废赞,但不捕獲前面的19徽龟。(不回溯)
(? (?>X) X,作為獨立的非捕獲組(不回溯)
(?=X)與(?>X)的區(qū)別在于(?>X)是不回溯的唉地。例如被匹配的字符串為abcm
當表達式為a(?:b|bc)m是可以匹配的据悔,而當表達式是a(?>b|bc)時是不能匹配的,因為當后者匹配到b時耘沼,由于已經(jīng)匹配极颓,就跳出了非捕獲組,而不再次對組內(nèi)的字符進行匹配群嗤〔ぢ。可以加快速度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狂秘,一起剝皮案震驚了整個濱河市骇径,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌者春,老刑警劉巖破衔,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異碧查,居然都是意外死亡运敢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門忠售,熙熙樓的掌柜王于貴愁眉苦臉地迎上來传惠,“玉大人,你說我怎么就攤上這事稻扬∝苑剑” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵泰佳,是天一觀的道長盼砍。 經(jīng)常有香客問我,道長逝她,這世上最難降的妖魔是什么浇坐? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮黔宛,結(jié)果婚禮上近刘,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好觉渴,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布介劫。 她就那樣靜靜地躺著,像睡著了一般案淋。 火紅的嫁衣襯著肌膚如雪座韵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天踢京,我揣著相機與錄音誉碴,去河邊找鬼。 笑死漱挚,一個胖子當著我的面吹牛翔烁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播旨涝,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼蹬屹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了白华?” 一聲冷哼從身側(cè)響起慨默,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弧腥,沒想到半個月后帐偎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柬讨,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了芍殖。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片延刘。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡茫多,死狀恐怖呵晨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澡为,我是刑警寧澤漂坏,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站媒至,受9級特大地震影響顶别,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拒啰,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一驯绎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谋旦,春花似錦条篷、人聲如沸骗随。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至指蚜,卻和暖如春乞巧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摊鸡。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工绽媒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人免猾。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓是辕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猎提。 傳聞我的和親對象是個殘疾皇子获三,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • \ :將下一字符標記為特殊字符、文本锨苏、反向引用或八進制轉(zhuǎn)義符疙教。例如,"n"匹配字符"n"伞租。"\n"匹配換行符贞谓。序列...
    小沙鷹168閱讀 536評論 0 1
  • 表達式意義: 1.字符 x 字符 x。例如a表示字符a {Java學習資料免費分享微信:tangniu5206...
    尚學先生閱讀 331評論 0 0
  • 正則表達式到底是什么東西葵诈?字符是計算機軟件處理文字時最基本的單位裸弦,可能是字母,數(shù)字作喘,標點符號理疙,空格,換行符徊都,漢字等...
    獅子挽歌閱讀 2,141評論 0 9
  • 初衷:看了很多視頻沪斟、文章,最后卻通通忘記了暇矫,別人的知識依舊是別人的主之,自己卻什么都沒獲得。此系列文章旨在加深自己的印...
    DCbryant閱讀 3,993評論 0 20
  • 9.19--9.23 第7章 正則表達式 正則表達式是一個拆分字符串并查詢相關(guān)信息的過程李根。 推薦練習網(wǎng)站: js ...
    如201608閱讀 1,018評論 0 4