Python爬虫--使用re正则表达式解析文本

进行文本匹配等操作最合适的工具就是正则表达式了,Python中的正则表达式模块叫做re,在此总结下此模块最基本的用法。关于正则表达式本身的模式字符串的构成,参考我的另一篇文章:正则表达式总结

使用正则表达式首先要导入re模块:

1
import re

Match对象

Match对象代表一次匹配的结果,包含了很多关于此次匹配的信息,其中最重要的就是获取匹配到的字符串,一般使用group()方法:

group()等价于group(0),返回整个匹配的子串;
group(num)返回第num个组对应的字符串,从1开始。

1
2
3
4
5
6
ss = 'Hello World!'
matchObj = re.search(r'(\w+) (\w+)(.)', ss)

print(matchObj.group(0))
print(matchObj.group(1))
print(matchObj.group(3))

输出结果为:

1
2
3
Hello World!
Hello
!

匹配

使用re.match()方法,默认从字符串起始位置开始匹配一个模式,此方法一般用于检查字符串是否符合某一规则,函数基本语法:

1
re.match(pattern, string)

匹配成功返回一个Match对象,否则返回None。

搜索

使用re.search()方法,扫描整个字符串并返回第一个成功的匹配。匹配与搜索的区别在于:re.match()只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search()匹配整个字符串,直到找到一个匹配。函数基本语法与re.match()相同:

1
re.search(pattern, string)

匹配成功返回一个Match对象,否则返回None。

替换

使用re.sub()方法,先根据指定模式进行搜索,再用指定字符串进行替换,函数基本语法:

1
re.sub(pattern, repl, string)

repl是需要替换的字符串,返回替换后的字符串,如果模式没有发现,字符将被没有改变地返回。

一个示例:

1
2
3
4
OldStr = 'Phone Number :##137-123-4567##'

NewStr = re.sub(r'\D', "", OldStr)
print(NewStr)

输出结果:

1
1371234567

这段程序可以去除原字符串中的所有非数字。


相关文章:

Python爬虫–使用requests获取网页
Python爬虫–使用BeautifulSoup解析HTML

参考资料:
Python正则表达式

文章目录
  1. 1. Match对象
  2. 2. 匹配
  3. 3. 搜索
  4. 4. 替换