何所謂正則表達式?個人理解就是文本搜索的一種規則。那么正則表達式就需要解決下面的問題
- 規則如何表示
- 規則如何使用
規則如何表示
序號 | 需求 | 表示 |
---|---|---|
1 | 任意一個字符 | (.) |
2 | 任意一個字符在備選范圍內(字符集) | ([a-zA-Z0-9]),[^abc] |
3 | 匹配開頭 | '^' (注意區別反轉字符集2,沒有放到中括號里面) |
4 | 匹配結尾 | '$' |
如果需要匹配多個連續的字符,怎么辦?那么就看連續的定義了,a) 如果只需要匹配('python','pear')兩個單詞,管道運算符就這么來了
序號 | 需求 | 表示 |
---|---|---|
5 | 匹配不等長單詞 | 管道運算符<code>(|)</code> ,'p(ython(|)ear)' |
多個字符的另外一種情況就是重復模式
序號 | 需求 | 表示 |
---|---|---|
6 | 0個或者多個t | '(t)*' |
7 | 只是一個t | '(t)+' |
8 | 指定數量m,n | '(t){m,n}' |
例子:匹配網址'www.lxweimin.com', 'wwww.jianshou.com'等網址可以為
r'^(w){3,4}\.jiansh(u|ou)(.)+com$'
主要是希望在你使用的時候能夠查詢到這些。注意轉義字符\\
的使用
規則如何使用?
規則已然通過字符串的方式構建了,這種字符串中的特定符號代表了一系列已知或者未知的東東。那么如何使用這個字符串呢?python提供了re模塊干這個事情,那么在深入之前,舉個例子。老板讓你找一個黑頭發或者黃頭發,年齡在16-20之間,罩杯在c和d之間的女模特,你會問什么問題呢?
- 去哪兒找(大街上,模特公司,還是xx數據庫)
- 怎么找(方法很多哈)
- 到底能不能找到(沙漠里估計就難找到這樣的模特呀)
- 找多少(一個還是都找到)
- 找到了做什么(走秀表演,還是拍廣告)
- 怎么才能快速的找到(問問前輩,做過了的)
這么多的問題,re模塊都給你解決了,對應模式的搜索
- 去哪兒找(提供的字符串)
- 怎么找(使用re模塊)
- 到底能不能找到(search下看看)
- 找多少(findall 全給你,你自己決定)
- 找到了做什么(分割字符串,替換)
- 怎么才能快速的找到(compile一下)