Python 正则表达式
介绍
正则表达式(Regular Expression,简称Regex)是一种强大的文本处理工具,它允许我们通过特定的模式(pattern)来搜索、匹配和操作字符串。Python的re
模块为我们提供了正则表达式的功能,使得在Python中进行复杂的字符串操作变得简单而高效。
基本概念
字符匹配
.
:匹配除换行符以外的任意字符。[ ]
:匹配括号内的任意一个字符,例如[abc]
可以匹配a
、b
或c
。[^ ]
:匹配不在括号内的任意一个字符,例如[^abc]
可以匹配除a
、b
、c
以外的任意字符。*
:匹配前一个字符0次或多次。+
:匹配前一个字符1次或多次。?
:匹配前一个字符0次或1次。{n}
:匹配前一个字符n次。{n,}
:匹配前一个字符至少n次。{n,m}
:匹配前一个字符至少n次,至多m次。
位置匹配
^
:匹配字符串的开始。$
:匹配字符串的结束。\b
:匹配单词的边界。\B
:匹配非单词的边界。
特殊字符匹配
\d
:匹配任意一个数字字符,等价于[0-9]
。\D
:匹配任意一个非数字字符,等价于[^0-9]
。\w
:匹配任意一个字母数字或下划线字符,等价于[a-zA-Z0-9_]
。\W
:匹配任意一个非字母数字或下划线字符,等价于[^a-zA-Z0-9_]
。\s
:匹配任意一个空白字符,包括空格、制表符、换页符等。\S
:匹配任意一个非空白字符。
re
模块的基本用法
re.match()
尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回一个匹配对象,否则返回None
。
python
import re
result = re.match(pattern, string)
if result:
print("匹配成功")
else:
print("匹配失败")
re.search()
扫描整个字符串并返回第一个成功的匹配,如果匹配成功,返回一个匹配对象,否则返回None
。
python
import re
result = re.search(pattern, string)
if result:
print("匹配成功")
else:
print("匹配失败")
re.findall()
找到所有匹配的子串,并返回一个列表。
python
import re
result = re.findall(pattern, string)
print(result)
re.sub()
替换匹配的子串。
python
import re
new_string = re.sub(pattern, repl, string)
print(new_string)
re.split()
根据模式分割字符串。
python
import re
result = re.split(pattern, string)
print(result)
实例
匹配邮箱地址
python
import re
pattern = r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}"
email = "example@gmail.com"
result = re.match(pattern, email)
if result:
print("有效的邮箱地址")
else:
print("无效的邮箱地址")
提取URL中的域名
python
import re
pattern = r"http[s]?://([a-zA-Z0-9.-]+)"
url = "https://www.example.com"
result = re.search(pattern, url)
if result:
print("域名:", result.group(1))
else:
print("未找到域名")
总结
正则表达式是Python中处理字符串的强大工具,通过掌握正则表达式的语法和Python的re
模块,我们可以轻松地完成复杂的字符串操作。