Python 正则表达式
什么是正则表达式
正则表达式(Regular Expression,通常缩写为“regex”或“regexp”)是一种用来描述、匹配一系列字符串的方法。
在 Python 中,正则表达式通常由 re
模块实现。
常用的正则表达式语法
匹配单个字符
用.
匹配任意字符,用[]
匹配指定字符集合,用[^]
匹配除了指定字符集合以外的任意字符。
示例代码:
import re
# 匹配任意字符
pattern1 = r'.'
str1 = '123'
match1 = re.match(pattern1, str1)
print(match1.group()) # 输出 1
# 匹配指定字符集合
pattern2 = r'[aeiou]'
str2 = 'hello'
match2 = re.search(pattern2, str2)
print(match2.group()) # 输出 e
# 匹配除了指定字符集合以外的任意字符
pattern3 = r'[^aeiou]'
str3 = 'hello'
match3 = re.search(pattern3, str3)
print(match3.group()) # 输出 h
匹配重复字符
用*
匹配前面的字符零次或多次,用+
匹配前面的字符至少一次,用?
匹配前面的字符零次或一次,用{n}
匹配前面的字符恰好 n 次,用{m, n}
匹配前面的字符 m 次至 n 次,用{m,}
匹配前面的字符至少 m 次。
示例代码:
import re
# 匹配前面的字符零次或多次
pattern1 = r'a*b'
str1 = 'ab'
match1 = re.match(pattern1, str1)
print(match1.group()) # 输出 ab
# 匹配前面的字符至少一次
pattern2 = r'a+b'
str2 = 'ab'
match2 = re.match(pattern2, str2)
print(match2.group()) # 输出 ab
# 匹配前面的字符零次或一次
pattern3 = r'a?b'
str3 = 'ab'
match3 = re.match(pattern3, str3)
print(match3.group()) # 输出 ab
# 匹配前面的字符恰好 n 次
pattern4 = r'a{2}b'
str4 = 'aab'
match4 = re.match(pattern4, str4)
print(match4.group()) # 输出 aab
# 匹配前面的字符 m 次至 n 次
pattern5 = r'a{2,3}b'
str5 = 'aaab'
match5 = re.match(pattern5, str5)
print(match5.group()) # 输出 aaab
# 匹配前面的字符至少 m 次
pattern6 = r'a{2,}b'
str6 = 'aaaab'
match6 = re.match(pattern6, str6)
print(match6.group()) # 输出 aaaab
匹配位置
用^
匹配字符串开头,用$
匹配字符串结尾,用\b
匹配单词边界,用\B
匹配非单词边界。
示例代码:
import re
# 匹配字符串开头
pattern1 = r'^he'
str1 = 'hello'
match1 = re.match(pattern1, str1)
print(match1.group()) # 输出 he
# 匹配字符串结尾
pattern2 = r'lo$'
str2 = 'hello'
match2 = re.search(pattern2, str2)
print(match2.group()) # 输出 lo
# 匹配单词边界
pattern3 = r'\bhe'
str3 = 'hello world'
match3 = re.search(pattern3, str3)
print(match3.group()) # 输出 he
# 匹配非单词边界
pattern4 = r'\Bhe'
str4 = 'hello world'
match4 = re.search(pattern4, str4)
print(match4.group()) # 输出 he
在 Python 中使用正则表达式
在 Python 中,使用正则表达式主要使用 re
模块。
从字符串中查找匹配项
使用 re.search()
方法从字符串中查找第一个匹配项。如果找到匹配项,则返回一个 Match
对象,否则返回 None
。
示例代码:
import re
pattern = r'hello'
str = 'world hello'
match = re.search(pattern, str)
print(match.group()) # 输出 hello
从字符串中查找所有匹配项
使用 re.findall()
方法从字符串中查找所有匹配项。如果找到匹配项,则返回一个由匹配项组成的列表,否则返回一个空列表。
示例代码:
import re
pattern = r'he'
str = 'hello world'
matches = re.findall(pattern, str)
print(matches) # 输出 ['he']
替换字符串中的匹配项
使用 re.sub()
方法可以替换字符串中的匹配项。
示例代码:
import re
pattern = r'he'
str = 'hello world'
sub_str = 'li'
new_str = re.sub(pattern, sub_str, str)
print(new_str) # 输出 llo world
分割字符串
使用 re.split()
方法可以将字符串根据正则表达式进行分割。
示例代码:
import re
pattern = r','
str = 'a,b,c'
new_str = re.split(pattern, str)
print(new_str) # 输出 ['a', 'b', 'c']
结论
正则表达式不仅在 Python 中有广泛的应用,而且在其他编程语言中也是一种非常常用的工具。学习和掌握正则表达式可以让我们更加高效地进行字符串处理和文本分析。