Python入门篇之正则表达式
什么是正则表达式
正则表达式(Regular Expression)是用来描述字符串模式的一种语言。它可以用来匹配、查找、替换字符串中的特定字符或者模式。在Python中,可以通过内置的re模块来实现正则表达式的功能。
常用的正则表达式符号有:
符号 | 描述 |
---|---|
. | 匹配任意字符 |
\w | 匹配字母、数字或下划线 |
\d | 匹配数字 |
\s | 匹配空白字符(空格、制表符等) |
[abc] | 匹配方括号中的任意一个字符 |
[^abc] | 匹配除了方括号中的字符之外的任意一个字符 |
^abc | 匹配以abc开头的字符串 |
abc$ | 匹配以abc结尾的字符串 |
a* | 匹配0个或多个a |
a+ | 匹配1个或多个a |
a? | 匹配0个或1个a |
a{m,n} | 匹配至少m个、最多n个a |
正则表达式在Python中的应用
在Python中使用正则表达式需要借助re模块。re模块中常用的函数有:
函数 | 描述 |
---|---|
match(pattern, string[, flags]) | 从字符串string的开头开始,查找满足正则表达式pattern的子串。返回一个match对象。 |
search(pattern, string[, flags]) | 在字符串string中查找满足正则表达式pattern的子串。返回一个match对象。 |
findall(pattern, string[, flags]) | 在字符串string中查找满足正则表达式pattern的所有子串。返回一个列表。 |
sub(pattern, repl, string[, count, flags]) | 在字符串string中查找满足正则表达式pattern的所有子串,并用repl替换。返回替换后的新字符串。 |
示例1:匹配邮箱地址
import re
pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
emails = ['test@example.com', 'user@domain.com', 'user@domain.co.in']
for email in emails:
if re.match(pattern, email):
print(email + ' is a valid email')
else:
print(email + ' is not a valid email')
输出结果为:
test@example.com is a valid email
user@domain.com is a valid email
user@domain.co.in is a valid email
示例2:查找字符串中的数字并求和
import re
s = '1a2b3c4d5e'
pattern = r'\d+'
nums = re.findall(pattern, s)
sum = 0
for num in nums:
sum += int(num)
print('数字和为:' + str(sum))
输出结果为:
数字和为:15
总结
正则表达式是一种强大的字符串处理工具,掌握正则表达式的基础和用法可以提升Python编程的效率。在实际应用中需根据具体的业务需求使用相应的正则表达式。