正则表达式是一种强大的字符串匹配工具,在Python中使用re模块实现正则表达式操作。
一、match对象
在使用re模块进行正则匹配时,会返回一个match对象。match对象包含匹配结果的信息,可以通过该对象获取匹配结果。
import re
# 匹配字符串中的数字
pattern = r'\d+'
string = '12abc34def'
result = re.match(pattern, string)
if result:
# 获取匹配内容
print(result.group())
# 获取匹配的起始和结束位置
print(result.start(), result.end())
# 获取匹配位置的元组
print(result.span())
运行结果:
12
0 2
(0, 2)
上述代码中,使用match函数对字符串进行匹配,返回一个match对象result。使用group()方法获取匹配内容,使用start()和end()方法获取匹配的起始和结束位置,使用span()方法获取匹配位置的元组。
二、group()方法
group()方法用于获取匹配到的字符串。
import re
# 匹配字符串中的数字
pattern = r'\d+'
string = '12abc34def'
result = re.match(pattern, string)
if result:
print(result.group())
运行结果:
12
三、start()和end()方法
start()和end()方法用于获取匹配的起始和结束位置。
import re
# 匹配字符串中的数字
pattern = r'\d+'
string = '12abc34def'
result = re.match(pattern, string)
if result:
print(result.start())
print(result.end())
运行结果:
0
2
四、span()方法
span()方法用于获取匹配位置的元组(起始位置和结束位置)。
import re
# 匹配字符串中的数字
pattern = r'\d+'
string = '12abc34def'
result = re.match(pattern, string)
if result:
print(result.span())
运行结果:
(0, 2)
五、使用group()方法获取分组匹配的结果
正则表达式中使用小括号括起来的部分称为分组。可以使用group()方法获取分组匹配的结果。
import re
# 匹配手机号码
pattern = r'(\d{3})-(\d{8})'
string = '010-12345678'
result = re.match(pattern, string)
if result:
# 获取完整匹配结果
print(result.group())
# 获取分组匹配结果
print(result.group(1))
print(result.group(2))
运行结果:
010-12345678
010
12345678
六、使用span()方法获取分组匹配的位置
使用span()方法获取分组匹配的位置。
import re
# 匹配手机号码
pattern = r'(\d{3})-(\d{8})'
string = '010-12345678'
result = re.match(pattern, string)
if result:
# 获取完整匹配位置元组
print(result.span())
# 获取分组匹配位置元组
print(result.span(1))
print(result.span(2))
运行结果:
(0, 12)
(0, 3)
(4, 12)
七、总结
re模块返回的match对象是正则表达式匹配结果的对象,包含匹配结果的信息。可以使用group()、start()、end()和span()等方法获取匹配结果的内容和位置信息。
在正则表达式中使用小括号括起来的部分称为分组,可以使用group()和span()方法获取分组匹配的结果和位置。