簡單講講關(guān)于正則表達(dá)式的入門

大家好立肘,我是IT修真院深圳分院的學(xué)員佑菩,一枚正直純潔善良的JAVA程序員秘狞。本次為大家?guī)黻P(guān)于正則表達(dá)式的入門嗤疯。

1.背景介紹

關(guān)于歷史

正則表達(dá)式一開始是研究人類神經(jīng)系統(tǒng)工作原理的專家提出的概念,后來正則表達(dá)式被引入到計(jì)算搜索算法的早期研究中摩桶,然后又經(jīng)過程序圈幾十年的發(fā)展與迭代桥状,到現(xiàn)在正則表達(dá)式已經(jīng)成為程序語言中不可分割的一部分。如果你是一位接觸計(jì)算機(jī)語言的工作者典格,那么你會在主流操作系統(tǒng)(*nix[Linux,Unix等]岛宦、Windows、HP耍缴、BeOS等)砾肺、主流的開發(fā)語言(delphi、Scala防嗡、PHP变汪、C#、Java蚁趁、C++裙盾、Objective-c、Swift、VB番官、Javascript庐完、Ruby以及Python等)、數(shù)以億萬計(jì)的各種應(yīng)用軟件中徘熔,都可以看到正則表達(dá)式優(yōu)美的舞姿门躯。我們甚至可以說,現(xiàn)在幾乎所有的編程語言都支持正則表達(dá)式酷师,只是因?yàn)檎Z言的不同而略有差異讶凉。

關(guān)于正則表達(dá)式

正則表達(dá)式(Regular Expression,在代碼中常簡寫為regex山孔、regexp或RE).

正則表達(dá)式是對字符串操作的一種邏輯公式懂讯,就是用事先定義好的一些特定字符、及這些特定字符的組合台颠,組成一個“規(guī)則字符串”褐望,這個“規(guī)則字符串”用來表達(dá)對字符串的一種過濾邏輯。

通俗的講就是按照某種規(guī)則去匹配符合條件的字符串蓉媳,而正則表達(dá)式定義的就是匹配規(guī)則譬挚。

2.知識剖析


元字符

(* + ? $ ^ . | \ ( ) { } [ ])

字符類

\w 匹配任何單字符 [a-zA-Z0-9]

\W 匹配任何單字符以外的字符

\d 匹配任何單數(shù)字[0-9]

\D 匹配所有數(shù)字之外的字符

\s 匹配任何Unicode空白符

\S 匹配任何Unicode空白符之外的字符

[...] 匹配任何方括號之內(nèi)的字符

[^...] 匹配任何方括號之外的字符

修飾符

1、g:global全文搜索酪呻,不添加,搜索到第一個匹配停止盐须;

2玩荠、i:ignore case忽略大小寫,默認(rèn)大小寫敏感贼邓;

3阶冈、m:multiple lines多行搜索。

重復(fù):量詞

?:出現(xiàn)零次或一次(最多出現(xiàn)一次)塑径;

+:出現(xiàn)一次或多次(至少出現(xiàn)一次)女坑;

*:出現(xiàn)零次或多次(任意次);

{n}:出現(xiàn)n次统舀;

{n,m}:出現(xiàn)n到m次匆骗;

{n,}:至少出現(xiàn)n次。

反義 :[^]

分組:使用()可以達(dá)到分組的功能誉简,使用量詞作用于分組

字符轉(zhuǎn)義:使用\可以達(dá)到字符轉(zhuǎn)義的功能

分枝條件:使用|可以達(dá)到分支的功能,約等于java里面的或者

貪婪與懶惰:在量詞后面加上?會變成非貪婪模式.

后向引用

零寬斷言

負(fù)向零寬斷言

處理選項(xiàng)

平衡組/遞歸匹配

關(guān)于正則表達(dá)式引擎

正則引擎主要可以分為兩大類:一種是DFA浑娜,一種是NFA狱意。這兩種引擎都有了很久的歷史(至今二十多年),當(dāng)中也由這兩種引擎產(chǎn)生了很多變體!于是POSIX的出臺規(guī)避了不必要變體的繼續(xù)產(chǎn)生碉熄。這樣一來桨武,主流的正則引擎又分為3類:一、DFA锈津,二玻募、傳統(tǒng)型NFA,三一姿、POSIX NFA七咧。

3.常見問題

1.讀不懂正則表達(dá)式怎么辦?

?2.正則表達(dá)式在java中如何運(yùn)用叮叹。


4.解決方案

1.讀不懂正則表達(dá)式怎么辦艾栋?正則表達(dá)式可視化工具:http://regexper.com

正則表達(dá)式可視化工具:http://regexper.com

一般來說,正則表達(dá)式只是用來寫的蛉顽,基本上寫完蝗砾,完成預(yù)期的功能后,作者就已經(jīng)不知道該怎么讀自己寫的正則表達(dá)式了携冤。

2.正則表達(dá)式在java中如何運(yùn)用悼粮。

java.util.regex 包主要包括以下三個類:

Pattern 類:

pattern 對象是一個正則表達(dá)式的編譯表示。Pattern 類沒有公共構(gòu)造方法曾棕。要創(chuàng)建一個 Pattern 對象扣猫,你必須首先調(diào)用其公共靜態(tài)編譯方法,它返回一個 Pattern對象翘地。該方法接受一個正則表達(dá)式作為它的第一個參數(shù)申尤。

Matcher 類:

Matcher 對象是對輸入字符串進(jìn)行解釋和匹配操作的引擎。與Pattern 類一樣衙耕,Matcher 也沒有公共構(gòu)造方法昧穿。你需要調(diào)用 Pattern 對象的 matcher 方法來獲得一個 Matcher對象。

PatternSyntaxException:

PatternSyntaxException 是一個非強(qiáng)制異常類橙喘,它表示一個正則表達(dá)式模式中的語法錯誤时鸵。

5.編碼實(shí)戰(zhàn)

6.擴(kuò)展思考

正則表達(dá)式這么強(qiáng),我們應(yīng)該怎么用厅瞎?

上帝的歸上帝饰潜,正則的歸正則,分工明確磁奖。

7.參考文獻(xiàn)

鏈接:http://deerchao.net/tutorials/regex/regex.htm

作者:deerchao

鏈接:https://juejin.im/post/582dfcfda22b9d006b726d11

作者:水墨寒湘

8.更多討論

1.正則表達(dá)式在linux的shell腳本中有哪些命令可以使用囊拜?

sed命令.awk命令和grep命令都可以使用正則表達(dá)式。

2.怎么是用這個東西顯示的比搭,什么網(wǎng)頁冠跷?

關(guān)于正則表達(dá)式的可視化工具:https://regexper.com/南誊。這個網(wǎng)站是可以安裝到本地的,由GitHub管理源碼蜜托。

3.使用正則判斷輸入的郵箱符合格式是否正確抄囚。

\\w+([+.-]\\w+)*@\\w+([.-]\\w+)*\\[^\n\r\x85\u2028\u2029]\\w+([.-]\\w+)*

PPT鏈接:戳這里看PPT

騰訊視頻:騰訊視頻

技能樹.IT修真院

“我們相信人人都可以成為一個工程師,現(xiàn)在開始橄务,找個師兄幔托,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏蜂挪,學(xué)習(xí)的路上不再迷弥靥簦”。

這里是技能樹.IT修真院棠涮,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線谬哀,學(xué)習(xí)透明化,成長可見化严肪,師兄1對1免費(fèi)指導(dǎo)史煎。快來與我一起學(xué)習(xí)吧

直接點(diǎn)擊此鏈接:http://www.jnshu.com/login/1/10985551

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驳糯,一起剝皮案震驚了整個濱河市篇梭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酝枢,老刑警劉巖恬偷,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隧枫,居然都是意外死亡喉磁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門官脓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涝焙,你說我怎么就攤上這事卑笨。” “怎么了仑撞?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵赤兴,是天一觀的道長。 經(jīng)常有香客問我隧哮,道長桶良,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任沮翔,我火速辦了婚禮陨帆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己疲牵,他們只是感情好承二,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纲爸,像睡著了一般亥鸠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上识啦,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天负蚊,我揣著相機(jī)與錄音,去河邊找鬼颓哮。 笑死家妆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的题翻。 我是一名探鬼主播揩徊,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嵌赠!你這毒婦竟也來了塑荒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤姜挺,失蹤者是張志新(化名)和其女友劉穎齿税,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炊豪,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凌箕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了词渤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牵舱。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缺虐,靈堂內(nèi)的尸體忽然破棺而出芜壁,到底是詐尸還是另有隱情,我是刑警寧澤高氮,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布慧妄,位于F島的核電站,受9級特大地震影響剪芍,放射性物質(zhì)發(fā)生泄漏塞淹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一罪裹、第九天 我趴在偏房一處隱蔽的房頂上張望饱普。 院中可真熱鬧运挫,春花似錦、人聲如沸费彼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽箍铲。三九已至雇卷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間颠猴,已是汗流浹背关划。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翘瓮,地道東北人贮折。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像资盅,于是被迫代替她去往敵國和親调榄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

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

  • Java的正則表達(dá)式講解:(為了能看清呵扛,本文正則表達(dá)式用中文的句號代替英文句點(diǎn)) 英文句點(diǎn)符號:匹配單個任意字符每庆。...
    紅姑娘閱讀 4,321評論 0 2
  • 1.正則表達(dá)式介紹 正則表達(dá)式算起來也是一個很龐大的語言系統(tǒng),在所有的開發(fā)語言中基本都支持正則表達(dá)式今穿,它可以很方便...
    babybus_superdo閱讀 2,560評論 3 6
  • 簡介 正則表達(dá)式是由普通字符(例如字符 a 到 z)以及特殊字符(稱為"元字符")組成的文字模式缤灵。模式描述在搜索文...
    我為峰2014閱讀 486評論 0 2
  • 原文地址 之前在http://shukuiyan.iteye.com/blog/507915文中已經(jīng)敘述過這個問題...
    hmaccelerate閱讀 835評論 0 1
  • 主人公是一位典型的LOSER腮出,他父親做生意失利導(dǎo)致家庭破產(chǎn),他自己的事業(yè)也走下坡路芝薇,被公司降職胚嘲,女朋友跟他分手,又...
    隴西讀書與寫作閱讀 755評論 1 14