正则表达式

在爬虫的时候,正则表达式是一个非常好的助手,这篇博文主要记录下正则表达式中的基本符号。

符号 含义 示例 说明
* 匹配前面的字符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']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章