Python 正则表达式
正则表达式是一种用来匹配字符串中模式的工具,非常实用。Python内置了re模块,提供了对正则表达式的支持,使用起来非常简便。
正则表达式语法
正则表达式基本语法如下:
- “.” :匹配除换行符以外的任意字符;
- “^” :匹配字符串开头;
- “$” :匹配字符串结尾;
- “*” :匹配前面的字符0次或多次;
- “+” :至少匹配前面的字符1次或多次;
- “?” :匹配前面的字符0次或1次;
- “()” :标记一个子表达式的开始和结束位置;
- “|” :分割两个可选项;
- “\” :转义特殊字符;
- “[]” :匹配一个字符集合。
具体用法可以看下面的示例代码。
re模块介绍
re模块是Python中用来处理正则表达式的模块,使用前需要先导入:
import re
常用的函数有:
- re.compile(pattern, flags=0) :将正则表达式编译为一个实例对象;
- re.search(pattern, string, flags=0) :在字符串中搜索符合正则表达式的第一个位置,返回match对象;
- re.match(pattern, string, flags=0) :从字符串开头开始匹配正则表达式,返回match对象;
- re.split(pattern, string, maxsplit=0, flags=0) :按照正则表达式切分字符串并返回一个列表;
- re.findall(pattern, string, flags=0) :搜索字符串,以列表形式返回全部匹配的子串;
- re.finditer(pattern, string, flags=0) :搜索字符串,返回一个匹配结果的迭代器;
- re.sub(pattern, repl, string, count=0, flags=0) :用指定的字符串替换匹配到的子串,并返回替换后的字符串。
re.match() 和 re.search()
re.match()和re.search()函数都是用来在字符串中搜索符合正则表达式的位置的,其中re.match()是从字符串的开始位置开始匹配,re.search()可以在任意位置开始匹配。
import re
# 匹配字符串开头
result = re.match('hello', 'hello, world!')
print(result) # <re.Match object; span=(0, 5), match='hello'>
# 匹配字符串其它位置
result = re.search('world', 'hello, world!')
print(result) # <re.Match object; span=(7, 12), match='world'>
re.split()
re.split()函数可以用来按照正则表达式切分字符串,并返回一个列表。可以用来切分一段文本为单词列表。
import re
text = 'Hello, I\'m a Python beginner!'
words = re.split('\W+', text)
print(words) # ['Hello', 'I', 'm', 'a', 'Python', 'beginner', '']
re.findall() vs re.finditer()
re.findall()函数可以用来搜索字符串,返回一个列表,其中包含了所有符合正则表达式的子串。而re.finditer()函数则返回一个迭代器,可以在循环中一个一个读取匹配到的结果。
import re
text = 'Python is a good language for beginners!'
# 返回符合正则表达式的所有子串
result = re.findall('\w+', text)
print(result) # ['Python', 'is', 'a', 'good', 'language', 'for', 'beginners']
# 返回迭代器
iterator = re.finditer('\w+', text)
for match in iterator:
print(match.group(), end=' ') # Python is a good language for beginners
re.sub()
re.sub()函数可以用来替换字符串中符合正则表达式的子串,可以用来进行文本的替换。
import re
text = 'Python is a good language for beginners, but it is also used by experienced programmers.'
# 将所有的'good'替换为'great'
new_text = re.sub('good', 'great', text)
print(new_text) # Python is a great language for beginners, but it is also used by experienced programmers.
结论
使用Python中re模块可以方便地处理正则表达式,其中常用的函数有re.compile()、re.search()、re.match()、re.split()、re.findall()、re.finditer()和re.sub()等。熟练掌握这些函数,可以实现文本的搜索、切分、替换等功能,对于处理文本数据会大有帮助。