使用單個字串來描述匹配一系列符合某個句法規則的字串,regular expression
破兩提取/替換
在高階文字編譯器中
在開發語言總使用驗證輸入輸出
使用者輸入的合法性驗證
爬蟲。。。
1.元字元
如果就是想要匹配.或者?可以使用轉義字元\來將特殊字元轉普通字元
(?#)用來表示注釋
分行+#來表示,這個我個人基本上不使用。
使用符號|將不同的規則分隔開。從左到右測試每個條件,如果滿足來某個分支的話,就不會再管其它條件
eg. 0\d-\d|0\d-\d
意思是 0xx-******xx或者0***-******x
分組就是將子表示式做成子集,使用()來進行分組。例如
(\d\.)\d
可以看作是簡單的ip位址的格式(雖然並沒有進行嚴格的數字限制,例如255以上的不可用的規則並沒有列出來)
格式:(?exp)
,而使用(?:exp)
是不捕獲匹配的文字,也不給此分組分配組號
語法說明
*?重複任意次,但盡可能少重複
??重複0次或一次,但盡可能少重複
+?重複一次或更多次,但盡可能少重複
?重複m-n次,但盡可能少重複
?重複至少m次,但盡可能少重複
語法說明
ignorecase
匹配時不區分大小寫
multiline
更改^和&的含義,使它們分別在任意一行的行首和行尾匹配而不是僅僅在整個字串的開頭和結尾匹配。
singleline
更改.的含義,使它與每乙個字元匹配,包括\n換行符
ignorepatternwhitespace
忽略表示式中的非轉義空白並啟用由#標記的額注釋
explicitcapture
僅捕獲以被顯式命名的組
如果要匹配 taobao taobao , home home 這樣的情況應該如何處理
\b(\w+)\b\s+\b\1\b
或者
\b(?\w+)\b\s+\b\k\\b
注意多了個\k
?+exp
零寬度正**先行斷言,自身出現的位置的後面能匹配表示式exp但是只需要前邊的
i'm singing while you're dancing
exp: \b\w(?=ing\b)
?<=exp
零寬的正回顧後發斷言,自身出現的位置的前面能匹配表示式但是只要後邊的
reading a book
(?<=\bre)\w+\b
ading
查詢一段單詞 單詞其**現了q,但是在q的之後跟的不是字母u
如果使用\b\w*\q[^u]\w*\b
上面的表示式是有問題的。在q之後跟了[^u]
,說明在q之後是有單詞的,而且並不能是u,如果對於單詞benq,就無法滿足要求。所以需要使用負向零寬斷言。
\b\w*1(?!u)\w*\b
?!之所以叫負向,就是沒有這個單詞
所以?也是同理
python基礎 Re正則
正規表示式 regular expression,簡稱re 正規表示式是對字串操作的 種邏輯公式,就是 事先定義好的 些特定字元 及這些特定字元的組合,組成 個 規則字串 這個 規則字串 來表達對字串的 種過濾邏輯。字串的匹配查詢 re模組中的findall函式可以對指定的字串進行遍歷匹配,獲取字串...
正則re模組
匹配任意乙個字元 以某個字元開頭 以某個字元結尾 匹配0次或多次 匹配一次或多次 匹配0次或1次 匹配n次 匹配n次或多次 匹配n次到m次 字符集,非 a z 匹配小寫字母a到z的任意字母一次 a z 匹配除了小寫字母a到z之外的任意字元一次 d 匹配數字0 9,0次或多次 d匹配任何十進位制數,0...
正則匹配 re
匹配一行字串的開頭 匹配任意字元,除了換行符 匹配括號中的任乙個,amk 匹配 a m 或 k 不在中的字元 abc 匹配除了a,b,c之外的字元 匹配0個或多個的表示式 匹配1個或多個的表示式 匹配0個或1個由前面的正規表示式定義的片段,非貪婪方式 f r t n 匹配所有的白字元 a z 除了小...