過濾敏感詞 正規表示式

2021-07-15 07:21:14 字數 2680 閱讀 1972

最近做了乙個遊戲聊天功能,其中有個過濾敏感字型的需求,其實這個功能很簡單,完全前端去控制,

傳送前把文字過濾一次,後端只**就好。

一.重要性

正規表示式在程式設計中經常會用到

如web前端的合法輸入檢測【郵箱檢測等】

如遊戲聊天中的遮蔽字型等

二.學習

正規表示式規則,掌握一些常用的匹配規則,以下以為c#為例

1.匹配單個字元或單個單詞

例如regex = small__zhang ,則會匹配文字中出現的所有small__zhang

2.匹配單個任意字元"."

例如regex = small.,則會匹配諸如small. small1 smallx等

3.如果我們本身只想匹配"."呢,因為"."屬於特殊字元,因為需要加個斜槓轉義

例如regex = small\.,則只會匹配small.

4.使用用以劃定屬於組內的字元的界限

例如regex = small[zx],則會匹配smallz或smallx

5.在中使用區間,中間用'-'連線

例如regex = small__zhang[0-9],則會匹配small__zhang0 ~ small__zhang9的所有字元

6.在中使用反義字元,用^開頭

例如regex = small__zhang[^0-7],則會匹配除了small_-zhang0 ~ small__zhang7的其他small__zhangx字元

7.如想匹配'['或']'本身,則需要使用斜槓轉義

8.元字元\d和\d

\d與[0-9]相同,\d與[^0-9]相同

9.元字元\w和\w

\w與[a-za-z0-9]相同,\w與[^a-za-z0-9]相同

10.元字元\s和\s

\s匹配所有單個空字元, \s匹配所有非空字元

11.匹配乙個或多個用+

例如regex = a+,則匹配乙個或多個a

12.郵箱檢測

例如regex = [\w.]+@[\w.]+\.\w+

13.匹配零個或乙個字元用?

例如regex = flowers?,則匹配所有的flower或flowers

14.匹配固定資料的字元,用

例如regex = 1[35]\d,則匹配13或14開頭的手機號碼

15.匹配區間以內數目的字元,用

例如regex = \d,則匹配1-3位數字

16貪婪匹配和惰性匹配

a.貪婪匹配會盡可能的匹配更多的字元,遇到匹配的不急著將匹配的字元儲存到匹配集合中,而是繼續擴充套件,直到無法繼續匹配為止

b.惰性匹配會極可能的匹配可能少的字元,它從第乙個字元開始找起,一旦符合條件,立刻儲存到匹配集合中,然後繼續進行查詢

c.貪婪匹配描述和惰性匹配描述對比:

左邊為貪婪匹配,右邊為惰性匹配

?               ??++?

**???

?17貪婪匹配和惰性匹配對比

匹配文字 small__zhang is agame developerliving inguangzhou.

regex =.*,返回game developerliving inguangzhou

regex =.*?,返回game developerguangzhou

18.匹配邊界使用\b

通常情況下以空格,段落首行,段落末尾,逗號,句號和'-'作為邊界

例如regex = \bsmall,匹配small開頭的字元

例如regex = \bzhang\b,匹配zhang這個字串

19.匹配文字首,使用^

例如regex = ^\s*small__zhang,匹配文字的開頭

20.匹配文字末尾,使用$

例如regex = small__zhang\s*$

21.子模式,使用"("和")"

例如regex = (

),則匹配諸如

22.或匹配,使用"|"

例如regex = |,則匹配或

23.子模式中使用或匹配

例如regex = (19|20)\d,則匹配19xx或20xx

24.巢狀子模式

例如regex = (19\d|2000)-([1-9]|1[0-2]),月份可是1到9或者10到12

三.遮蔽關鍵字

public class senesitiveword

public static string getpattern()

if(patt.length > 0)

return patt.tostring();

}private static regex getregex()

return reg_word;

}private bool hasblockwords(string raw)

private static string wordsfilter(string raw)

public static string converttofilterwords(string raw)

return ret;

}}

這樣就可以過濾掉敏感詞庫中的字型了

正規表示式文字過濾

1.grep 預設是按照以行為基本單位進行匹配和顯示的。2.grep預設匹配只要包含模式字元即可 grep w 是按單詞匹配,和普通的匹配不一致 單詞的分隔符,數字加字母加下劃線都算做單詞的一部分 匹配顯示結果的行號 grep 並且關係和 或者關係 1.並且 grep root etc passwd...

MySql萬用字元過濾,正規表示式過濾

百分號萬用字元 在搜尋串中,表示任意字元出現的任何次數。1 找出所有以jet開頭的產品 select prod name,prod price from products where prod name like jet 2 匹配任何位置包含文字anvil的值 select prod name,pr...

使用flex 做關鍵詞 正規表示式過濾

編寫 l檔案 c 標頭檔案 和變數定義 c function definition compile link flex o my.c my.l gcc o my my.c lfl 當無main函式時,需要 lfl option noreject noyywrap 中文支援 l 檔案與需要檢測的資料檔...