1. re.match() 返回值
re.match() 方法用于从字符串的起始位置匹配一个模式,如果匹配成功,返回一个匹配的对象,否则返回 None。其返回属性有:
group([group1, …]):返回被 RE 匹配的字符串,可以一次输入多个组,将对应的匹配分别返回
start([group]):返回匹配内容在原字符串中的起始位置
end([group]):返回匹配内容的结束位置
span([group]):返回 (start(group), end(group))
import re
text = "Hello, world!"
pattern = r"^Hello"
match = re.match(pattern, text)
print("group():", match.group()) # "Hello"
print("span():", match.span()) # (0, 5)
1.1. 多个组返回
如果正则表达式中有多个括号,即多个组,可以在 group() 中传入参数,以此获取对应的匹配内容。
import re
text = "My name is Python, I'm 27 years old."
pattern = r"My name is (\w+),.*(\d+)"
match = re.match(pattern, text)
print("group(1):", match.group(1)) # "Python"
print("group(2):", match.group(2)) # "27"
print("group(1, 2):", match.group(1, 2)) # ("Python", "27")
1.2. 匹配失败返回 None
如果 re.match() 没有匹配到任何结果,返回 None。
import re
text = "Hello, world!"
pattern = r"Welcome"
match = re.match(pattern, text)
print(match) # None
2. re.search() 返回值
re.search() 方法将从字符串的任意位置开始匹配,返回第一个匹配对象,否则返回 None。其返回属性与 re.match() 相同。
import re
text = "Hello, world!"
pattern = r"world"
match = re.search(pattern, text)
print("group():", match.group()) # "world"
print("span():", match.span()) # (7, 12)
3. re.findall() 返回值
re.findall() 方法返回所有匹配到的结果,以列表形式返回。如果没有匹配结果,则返回空列表。
import re
text = "Python is the best language. I love Python very much!"
pattern = r"Python"
match = re.findall(pattern, text)
print(match) # ["Python", "Python"]
3.1. 多个组返回
如果要返回多个组对应的匹配结果,需要将正则表达式中括号的个数与 group() 中参数的个数对应。
import re
text = "My name is Python, I'm 27 years old."
pattern = r"My name is (\w+),.*(\d+)"
match = re.findall(pattern, text)
print(match) # [("Python", "27")]
4. re.finditer() 返回值
re.finditer() 方法返回一个迭代器,每一个元素都是一个 MatchObject 实例。其返回属性与 re.match() 相同。
import re
text = "Python is the best language. I love Python very much!"
pattern = r"Python"
matches = re.finditer(pattern, text)
for match in matches:
print("group():", match.group()) # "Python"
print("span():", match.span()) # (0, 6)
5. re.sub() 返回值
re.sub() 方法将匹配到的子串替换为指定的字符串,并返回替换后的新字符串。
import re
text = "Python is the best language. I love Python very much!"
pattern = r"Python"
new_text = re.sub(pattern, "JavaScript", text)
print(new_text) # "JavaScript is the best language. I love JavaScript very much!"
5.1. 替换指定次数
re.sub() 方法还可以指定替换的次数。
import re
text = "1 2 3 4 5"
pattern = r"\d+"
new_text = re.sub(pattern, "0", text, count=3) # 只替换前三个
print(new_text) # "0 0 0 4 5"