在爬蟲的時候,正則表達式是一個非常好的助手,這篇博文主要記錄下正則表達式中的基本符號。
符號 | 含義 | 示例 | 說明 |
---|---|---|---|
* | 匹配前面的字符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']