Python入门篇之正则表达式

  • Post category:Python

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编程的效率。在实际应用中需根据具体的业务需求使用相应的正则表达式。