【D1n910】拒絕CP黨/高級彈幕屏蔽術(shù)|正則表達(dá)式入門(二)

正常操作,正常分析,大家好,我是D1n910。
本文學(xué)習(xí)自 正則表達(dá)式30分鐘入門教程 http://deerchao.net/tutorials/regex/regex.htm

書接上文

六、重復(fù)
根據(jù)(一)四、元字符 的介紹,我們知道了可以用“\d”這個元字符來匹配數(shù)字。比如彈幕上有一些人會把自己看視頻的時間放上去,比如彈幕A“2019年06月03日打卡”,如果直接用正則表達(dá)式“/\d/”的話,確實能夠把帶有數(shù)字字符的彈幕A屏蔽,不過也會讓彈幕B“喵帕斯x1”這樣的彈幕被誤傷,我們可以這么做“/\d\d\d\d/”,意思就是匹配有四個連續(xù)【數(shù)字字符】的彈幕,這樣就不會讓彈幕B被誤傷了。
難道每次都要重復(fù)寫嗎?比如QQ號碼現(xiàn)在一般是十位,難道我們要用“/\d\d\d\d\d\d\d\d\d\d/”來匹配嗎?有沒有更簡單的做法。我們可以這么寫“/\d{10}/”這個的意思就是,匹配左花括號前的對應(yīng)字符十次。
如果你現(xiàn)在在用電腦端的網(wǎng)頁進(jìn)行訪問,不想通過視頻來測試,那么你現(xiàn)在可以嘗試打開你的瀏覽器的【開發(fā)者工具】來嘗試下正則表達(dá)式!
方法:百度 “你的瀏覽器名稱”+“如何打開開發(fā)者工具”,如 “谷歌瀏覽器”+“如何打開開發(fā)者工具”
建議用谷歌瀏覽器進(jìn)行嘗試!
打開后,選擇“Console”,在控制臺中輸入命令體驗!
在控制臺中敲入命令,格式是 a.test("b"),例如/\d{10}/.test("11111")
*a是你的正則表達(dá)式;
*b是你要嘗試匹配的彈幕內(nèi)容;
*注意,涉及到符號的,一定要用英文輸入法下的符號。用中文輸入法下的符號會有問題;
*當(dāng)你看到返回true的時候,說明匹配成功,那么對應(yīng)的彈幕會被屏蔽;
*當(dāng)你看到返回false的時候,說怕匹配失敗,那么對應(yīng)的彈幕不會被屏蔽。

重復(fù)這邊我們用到了元字符中的限定符“{}”,還有更多常用的限定符

這些有什么用呢?剛剛我們用了一個例子了。再舉一個例子。比如下面的這張截圖上的彈幕。

我能夠接受“轟轟”這條彈幕,能夠接受“轟總我的!”這條彈幕,不過對“轟轟轟總”這條彈幕就撓頭了,我要把彈幕里有3個轟以上的都屏蔽掉,那這樣的正則表達(dá)式怎么寫?用“/轟{3,}/”就可以,它匹配有“轟”這個字符且連續(xù)重復(fù)三次以上的彈幕。

七、字符類
假設(shè)我是一名不喜歡出久、轟焦凍、爆豪的人,我想要屏蔽掉帶有這些關(guān)鍵字的彈幕怎么辦?
在(一)四的學(xué)習(xí)中,我們知道了“\d”對應(yīng)的是全部數(shù)字字符,“.”對應(yīng)的是除了換行符以外的全部字符,這些元字符對應(yīng)了一些常用的字符集合。想要設(shè)定自己的字符集合,只需要在方括號里列出來就可以了,像我們剛剛需要的正則表達(dá)式,即是“/[出轟豪]/”,就可以匹配任帶有出或者豪或者轟的字符的彈幕。
我們還可以規(guī)定一個【范圍】,不用全部寫出來,比如“/[0-9]/”和“/[0123456789]/”“/\d/”一樣都是匹配任意一位數(shù)字;“/[0-9a-z]/”匹配任意一位數(shù)字或者任意一位小寫的從a到z的字符。
(PS:方括號是元字符,方括號內(nèi)不管包含多少個內(nèi)容,它也只是對應(yīng)匹配一個字符噠~)
那我們平時想屏蔽CP黨這么辦?舉個??,有些人喜歡在《我的英雄學(xué)院》里刷男主角們的CP,類似“轟出”,就是一個關(guān)鍵字字符配合上另一個關(guān)鍵字字符,比如,我們想屏蔽掉正常情況下,三大主角的經(jīng)典CP組合,那么只需要用這個正則表達(dá)式 “/[勝出轟][勝出轟]]/”,意思就是他們?nèi)齻€在一起 屏蔽掉有對應(yīng)關(guān)鍵詞的彈幕。
以后類似的CP黨也可以這么屏蔽~當(dāng)然如果用這種方法,最好是單字關(guān)鍵詞,這樣可以盡量避免誤傷。
重要內(nèi)容:時至今日,我在回看《我的英雄學(xué)院》的時候,發(fā)現(xiàn)很多CP黨彈幕都被清理了(粗略看沒幾個),看來還是要靠大家鴨。

下期我們會進(jìn)行稍稍深入的介紹有關(guān)【分枝條件】......這會給你帶來非常多非常多的幫助。?
正則表達(dá)式——學(xué)習(xí)進(jìn)度(7/18)
發(fā)文不易,你的實踐+評論就是給我最大的幫助