在爬虫的时候,正则表达式是一个非常好的助手,这篇博文主要记录下正则表达式中的基本符号。
符号 | 含义 | 示例 | 说明 |
---|---|---|---|
* | 匹配前面的字符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']