正則表達式

在爬蟲的時候,正則表達式是一個非常好的助手,這篇博文主要記錄下正則表達式中的基本符號。

符號 含義 示例 說明
* 匹配前面的字符0次或更多次 ab 匹配aa或bbb或bbbbbb,
+ 匹配前面的字符1次或更多次 a+b+ 匹配abbb或aabbb
? 匹配前面的字符0次或1次
{m} 匹配前面的字符m次
{m,} 匹配前面的字符m次或更多次
{m,n} 匹配前面的字符m次到n次
\b 匹配單詞的開始或結束 \ba\b 匹配a
^ 匹配字符串開始 ^is 匹配以is開始的字符串
$ 匹配字符串結束 are$ 匹配以end結尾的字符串
. 匹配除換行符外的任意單個字符
\w 匹配字母或數字或漢字或下劃線
\s 匹配任意的空字符串
\d 匹配數字
[] 匹配中括號裏的任意一個字符
[^] 匹配不在中括號裏的任意一個字符 [^aeiou] 匹配任意非元音字母字符
?! 不包含 表示後面的字符不能出現在目標字符串裏
| 分支 b(a|b|c)e 匹配bae或bbe或bce

下面是re模塊的幾個核心函數。
1.re.compile(pattern, flags=0)
返回正則表達式對象
2.re.match(pattern, string, flags=0)
如果成功匹配字符串的話,返回對象,否則,返回None
3.re.findall(pattern, string, flags=0)
查找字符串所有與正則表達式匹配的模式,返回字符串的列表
4.re.sub(pattern, repl, string, count=0, flags=0)
用指定的字符串去替換原子符串中與正則表達式相匹配的模式。

sentence = "我你dirty talk,你dirty talk,我"
m = re.sub("[dirty talk]+","*",sentence)
m

Out:

'我你*,你*,我'

5.re.split(pattern, string, maxsplit=0, flags=0)
用與正則表達式相匹配的模式去分割字符串,返回列表。

sentence = "Help# on   & function, split in module re"
m = re.split("[#&,(?!(\s))]+",sentence)
m

Out:

['Help', 'on', 'function', 'split', 'in', 'module', 're']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章