中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

終(zhong)于可以徹(che)底告別手寫正則表(biao)達式了

可以徹底告別手寫正則表達式了

這篇文章的(de)(de)(de)目的(de)(de)(de)是讓你(ni)能(neng)得到完美的(de)(de)(de)正則表達(da)式(shi),而且還不用自己拼。

說到正則表達式,一直是令我頭疼的問題,這家伙一般時候用不到,等用到的時候發現它的規則是一點兒也記不住,\d表示一個數字,\s表示包括下劃線在內的任意單詞字符,也就是 [A-Za-z0-9_],還有[\s\S]*可(ke)以匹配包括換行在內的任意字符串。

這你都能記(ji)住嗎,如果能的(de)話,那真的(de)佩服(fu),反正我是記(ji)不住,之前每(mei)次手寫(xie)的(de)時(shi)候(hou)都得跟查字典(dian)似的(de)一個(ge)個(ge)的(de)查,簡單(dan)的(de)還(huan)好(hao),復雜的(de)就很痛(tong)苦了(le)。

過(guo)程往(wang)往(wang)是(shi)這個樣子的:

1、 先打開 Google,搜索一(yi)篇正(zheng)則表(biao)達式,找到一(yi)份像上圖那樣的字典教程,先看個幾分鐘,回憶回憶,還(huan)有可(ke)能回憶不起來。

2、然后就開始根據(ju)需(xu)求寫一個(ge)正則表達式。

3、放到程序(xu)中執行一下。

4、誒(e^),怎么不(bu)好用,匹(pi)配不(bu)上啊,接著修改正則。

5、繼續從 3 - 4 的循環,直到運(yun)氣來了,正常出結果了。

這是最早的時候,真的是全靠那點僅有的實力和運氣了。

記(ji)得(de)剛畢業不久的(de)時候,有一次領導給安排(pai)一個任務,要(yao)在(zai)一堆 PDF 文件里把我們(men)需要(yao)的(de)數(shu)據摘出來。PDF 這玩意兒吧,你把它的(de)內容(rong)讀出來,它就(jiu)是一大段文本,要(yao)在(zai)這一堆內容(rong)不一致的(de)文件中準確(que)的(de)拿到(dao)數(shu)據,第一反應就(jiu)是用(yong)正(zheng)則。

當時(shi)的(de)做(zuo)法就是(shi)(shi)上面的(de) 1-5這(zhe)幾(ji)(ji)步(bu)來的(de),加(jia)上當時(shi)候剛畢業比(bi)較菜(cai),跌(die)跌(die)撞(zhuang)撞(zhuang)才(cai)把程序(xu)寫好,中間有幾(ji)(ji)次調試的(de)時(shi)候,程序(xu)一跑起來,VS(Visual Studio)就特別(bie)卡。對(dui)的(de),就是(shi)(shi)宇宙第一強大(da)的(de) IDE ,當時(shi)我還在(zai)寫 C#,縱然是(shi)(shi)宇宙第一強大(da),也被我弄的(de)特別(bie)卡。

當時(shi)只道(dao)是正則寫的有問題,然后就一直(zhi)改。

后來才(cai)知道,那是(shi)因為正則寫的不合理,發生了(le)回溯(su)現象,越不合理,回溯(su)越嚴重(zhong),加上當時的 PDF 內(nei)容很多,所以導致開發工具都(dou)卡了(le),這(zhe)要是(shi)整到線上,那怕是(shi)混不下去了(le)。

關于回溯的(de)問(wen)題,可(ke)以參考下面這篇文章《失控(kong)的(de)正(zheng)則表(biao)達式(shi):災難性的(de)回溯》

后來就不(bu)(bu)至(zhi)于那(nei)么菜了(le),知道了(le)一些關于正(zheng)則表(biao)達(da)式的(de)在(zai)線網站,上(shang)(shang)面有一些常用(yong)的(de)正(zheng)則表(biao)達(da)式,不(bu)(bu)用(yong)自(zi)己搗(dao)鼓了(le),能(neng)偷懶(lan)當然要偷懶(lan)了(le)。可以在(zai) Goolge 上(shang)(shang)搜(sou)索關鍵詞「正(zheng)則表(biao)達(da)式 在(zai)線」,然后就會(hui)出來一大堆(dui),直(zhi)接在(zai)上(shang)(shang)面用(yong)那(nei)些常用(yong)的(de)正(zheng)則,例如手(shou)機號(hao)、郵箱、網址啊(a),基(ji)本(ben)上(shang)(shang)能(neng)解決90%的(de)需求(qiu)場景。

另外的10%呢,以前可能只(zhi)能自(zi)己(ji)琢磨(mo)了,現在都2023年了,基本(ben)上99%的概率都不用親(qin)自(zi)動手了,當然了,如果是大佬呢,就想自(zi)己(ji)寫(xie),那完全(quan)沒問題。

ChatGPT 完美解決

ChatGPT 是LLM(大(da)語言模(mo)型(xing))的(de)產品,最最擅長(chang)的(de)事情就(jiu)是分析語言,而正則表(biao)達式的(de)應用場景是什么(me)呢(ni),其實就(jiu)是在一大(da)堆文本語言中按(an)照我們的(de)規(gui)則,找到我們需要的(de)內容,總的(de)來說(shuo),也是對于(yu)文本語言的(de)處(chu)理(li),所以(yi)用 ChatGPT 解決(jue)正則表(biao)達式的(de)問題(ti)簡直(zhi)太合適不過了。

比如最簡(jian)單的(de),匹(pi)配中國的(de)手機號,直接(jie)讓 ChatGPT 把正則寫出(chu)來,而且連代碼(ma)都給你寫好了。

至于(yu)網(wang)址、郵(you)箱等(deng)等(deng)也不在話下(xia)了(le)。

不僅ChatGPT 可以,連(lian)百度(du)文心(xin)一(yi)言也可以。百度(du)文心(xin)一(yi)言雖然這(zhe)樣可以,但是如果(guo)你反(fan)過來問它(ta),它(ta)就蒙圈了。

比(bi)如我問 aaa@126.com 是不是一(yi)(yi)個(ge)(ge)合法的郵箱(xiang),ChatGPT 會告訴你這個(ge)(ge)郵箱(xiang)是合法的,但是百(bai)度文心一(yi)(yi)言就(jiu)不行了。

下(xia)面這個(ge)是 ChatGPT 的回答(da):

ChatGPT 的回答

下(xia)面這個(ge)是百(bai)度文(wen)心一言的(de)回答:

文心一言的回答

不(bu)僅郵箱不(bu)行,你問它一(yi)個手機(ji)號是否合法,百度文(wen)心一(yi)言也不(bu)行,還會(hui)告(gao)訴(su)你這(zhe)個號碼(ma)的歸(gui)屬(shu)地,但是這(zhe)個歸(gui)屬(shu)地也是錯(cuo)誤的。

這(zhe)樣就看出來什么是(shi)(shi)智(zhi)能,什么是(shi)(shi)大(da)數據了,明顯 ChatGPT 更(geng)智(zhi)能一點,希望(wang)國產的大(da)模型(xing)能在這(zhe)兩年追上吧。

再舉一個例子

匹配一(yi)段 HTML 中(zhong)的某(mou)個部分也是(shi)正則的常用場景,做過(guo)爬蟲的或多或少都用過(guo)正則吧。

比如我在一大段 HTML 中(zhong)有這么一部分(fen)

<div class="time">這是一個,this is some</div>

現在要拿到這個 div 中的內容部分,當然有很多其他的方式了,比如 Java 版的 jsoup,使(shi)用 xpath、css selector 等都可以(yi),但是(shi)如果就(jiu)要用正則呢,是(shi)不是(shi)自(zi)己寫的話(hua),一般菜(cai)鳥就(jiu)感(gan)覺很麻煩(fan)了。

這時候我們問(wen)問(wen) ChatGTP ,看(kan)看(kan)它怎么搞的(de)。

直接就這么問了:

<div> <div class="outer"> <div class="time">這是一個,this is some</div> <div class="button">button</div> </div> </div>, 用 Java 正則表達式匹配這段 HTML 中 class="time" 的(de)這個(ge)標簽(qian)的(de) Text 部分

image-20230418224312067

直(zhi)接拿(na)過代碼跑一下,沒有任何問題。

有(you)同學說了,這么明顯的標(biao)簽,還(huan)用的著 ChatGPT ,直接拿(na)過來就寫了。

這(zhe)里只(zhi)是(shi)舉個(ge)例(li)子,如(ru)果(guo)哪位有比較(jiao)復雜的匹(pi)配(pei)邏輯,也可以用ChatGPT 來試(shi)試(shi),基本上(shang)99%都能直接解(jie)決。

還有一個網站很厲害

如果(guo)你沒有(you)辦法或者不想用 ChatGPT ,也不想用百度文心一言這(zhe)些,我(wo)還發現一個(ge)網站(zhan),這(zhe)個(ge)網站(zhan)我(wo)嚴重懷疑它已經接入了(le) ChatGPT ,它也支持通過自然語言描述,就(jiu)能(neng)給出相應(ying)的正(zheng)則表達(da)式。

網站地址:

比如我(wo)跟他說:提取一(yi)段(duan)字符(fu)串中的中國(guo)手機號碼部分,而且還有正則可(ke)視化。

上面(mian)的(de)那(nei)個(ge)匹配 HTML 的(de)例(li)子,我也(ye)在這個(ge)網站上試過,結果也(ye)是可以的(de)。

純粹的好東西分享,我跟(gen)這個網站沒有任何(he)關系。

一個幫你分析正則的網站

接下來這(zhe)個(ge)網站(zhan)呢,如果你(ni)想對正(zheng)則(ze)有比較深入的理(li)解,或者想看看自己寫(xie)好的正(zheng)則(ze)或ChatGPT 幫你(ni)生成的正(zheng)則(ze)表達式效果怎么樣,性(xing)能好不好,都可以在這(zhe)個(ge)網站(zhan)進(jin)行。

網站地址:

網站左側可(ke)以(yi)選擇你的(de)目(mu)標語(yu)言,也就是(shi)你的(de)代碼實現是(shi)哪種語(yu)言 Java 還是(shi) JavaScript 等。

中間(jian)上方是正則表達式,中間(jian)下方是待匹配的內容。

右側上方是你寫的(de)正則(ze)對待匹配內容完(wan)整的(de)匹配分析過程,非(fei)常詳細,可以通(tong)過這里清(qing)楚的(de)看(kan)出這個正則(ze)匹配的(de)時候經過了哪些路徑。

右側下方是最終(zhong)的匹配結果。

如(ru)果你寫的正則在工作(zuo)的時候發生了明(ming)顯的回溯,這里也(ye)會給出提示,告訴你問題,讓你去優化。

總結

君子(zi)善假于物也(ye),雖然我很菜(cai),但是工(gong)具(ju)好(hao)用啊,我+好(hao)用的工(gong)具(ju),等于我也(ye)很厲害(hai)了(le)。

歡迎(ying)捧場,趕緊用(yong)(yong)(yong)一用(yong)(yong)(yong)吧,覺(jue)得(de)好用(yong)(yong)(yong)的話,可以推薦給身邊的小伙(huo)伴也用(yong)(yong)(yong)一下(xia)。

posted @ 2023-07-13 09:52  風的姿態  閱讀(7183)  評論(21)    收藏  舉報