最近做了乙個遊戲聊天功能,其中有個過濾敏感字型的需求,其實這個功能很簡單,完全前端去控制,
傳送前把文字過濾一次,後端只**就好。
一.重要性
正規表示式在程式設計中經常會用到
如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 developer與guangzhou
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 檔案與需要檢測的資料檔...