1. 正则表达式基础
正则表达式(Regular Expression)是一种用于匹配字符串(string)中“模式”的表达式。Python 中使用 re 库进行正则表达式操作。
1.1 匹配单个字符
匹配单个字符可以使用 .(点号)来表示。例如,查找以 a 结尾的单词,可以使用如下代码:
import re
text = 'hello world and apple'
pattern = r'\w+a\b'
result = re.findall(pattern, text)
print(result) # ['pa', 'le']
其中,\w 表示匹配任意单个字符(包括字母、数字、下划线),+ 表示匹配前面的字符一次或多次,\b 表示匹配单词边界。
1.2 匹配特定字符
使用 [ ] 中括号来匹配特定的字符,其中可以使用连字符 - 表示字符范围。例如,匹配所有的元音字母,可以使用如下代码:
text = 'hello world and apple'
pattern = r'[aeiou]'
result = re.findall(pattern, text)
print(result) # ['e', 'o', 'o', 'a', 'e']
其中,[aeiou] 表示匹配 a、e、i、o、u 中的任意一个字符。
1.3 匹配重复字符
使用 { } 花括号来匹配重复的字符。例如,匹配重复出现的字符 oo,可以使用如下代码:
text = 'hello world and apple'
pattern = r'o{2}'
result = re.findall(pattern, text)
print(result) # ['oo']
其中,{2} 表示匹配前面的字符重复出现 2 次。
2. 正则表达式高级应用
2.1 匹配多个字符串
使用 | 竖杠符号来匹配多个字符串,表示“或”的关系。例如,匹配单词中以 a 或 e 结尾的单词,可以使用如下代码:
text = 'hello world and apple'
pattern = r'\w+(a|e)\b'
result = re.findall(pattern, text)
print(result) # ['hello', 'apple']
其中,(a|e) 表示匹配 a 或 e 中的任意一个字符。
2.2 匹配任意次数的字符
使用 * 星号来匹配任意次数的字符,即可以出现 0 次、1 次、多次。例如,匹配出现了 0 次或多次 e 的单词,可以使用如下代码:
text = 'hello world and apple'
pattern = r'\w*e\w*\b'
result = re.findall(pattern, text)
print(result) # ['hello', 'apple']
其中,\w* 表示匹配任意数量的字母、数字或下划线。
2.3 匹配重复次数有限的字符
使用 + 加号来匹配重复次数有限的字符,即至少出现 1 次、多次。例如,匹配至少出现 2 次 e 的单词,可以使用如下代码:
text = 'hello world and apple'
pattern = r'\w*e\w*e\w*\b'
result = re.findall(pattern, text)
print(result) # ['hello']
其中,\w*e 表示匹配至少出现 1 次 e 的字母、数字或下划线(注意,这里并不是使用 {2} 明确指定出现 2 次 e,因为中间可能还有其他字符)。
2.4 匹配开头和结尾字符
使用 ^ 符号表示匹配开头字符,使用 $ 符号表示匹配结尾字符。例如,匹配开头为 h、结尾为 e 的单词,可以使用如下代码:
text = 'hello world and apple'
pattern = r'^h\w*e$'
result = re.findall(pattern, text)
print(result) # ['hello']
其中,^h 表示匹配以 h 开头的单次,\w* 表示匹配任意数量的字母、数字或下划线,$ 表示匹配以 e 结尾的单词。
2.5 匹配特定词语
使用 ( ) 小括号来匹配特定词语。例如,匹配包含字母 a 和字母 e 的单词,可以使用如下代码:
text = 'hello world and apple'
pattern = r'\b(\w+a\w*e\w*|\w+e\w*a\w*)\b'
result = re.findall(pattern, text)
print(result) # ['hello', 'apple']
其中,(\w+a\w*e\w*|\w+e\w*a\w*) 表示匹配以 a 开头、e 结尾或以 e 开头、a 结尾的单词。
3. 总结
本文介绍了 Python 中正则表达式的基础用法和高级用法,包括匹配单个字符、匹配特定字符、匹配重复字符、匹配多个字符串、匹配任意次数的字符、匹配重复次数有限的字符、匹配开头和结尾字符、匹配特定词语等内容。
学习正则表达式在 Python 中的应用可以帮助我们更准确地处理文本数据,提高数据处理的效率和精度。