我在使用 IDLE 编辑器时,决定使用正则表达式来处理字符串。但是当我输入在线教程上告诉我的内容时,它只会输出:
<_sre.SRE_Match object at 0x00000000031D7E68>
完整程序:
import re
reg = re.compile("[a-z]+8?")
str = "ccc8"
print(reg.match(str))
结果:
<_sre.SRE_Match object at 0x00000000031D7ED0>
请问如何实际打印输出结果?
我在使用 IDLE 编辑器时,决定使用正则表达式来处理字符串。但是当我输入在线教程上告诉我的内容时,它只会输出:
<_sre.SRE_Match object at 0x00000000031D7E68>
完整程序:
import re
reg = re.compile("[a-z]+8?")
str = "ccc8"
print(reg.match(str))
结果:
<_sre.SRE_Match object at 0x00000000031D7ED0>
请问如何实际打印输出结果?
在使用match
函数时,需要在其后加上.group()
才能打印出匹配的字符串,否则它只会显示是否有匹配。若要打印由捕获组捕获的字符,需要将相应的组索引传递给.group()
函数。
>>> import re
>>> reg = re.compile("[a-z]+8?")
>>> str = "ccc8"
>>> print(reg.match(str).group())
ccc8
带有捕获组的正则表达式。
>>> reg = re.compile("([a-z]+)8?")
>>> print(reg.match(str).group(1))
ccc
re.match(pattern, string, flags=0)
如果字符串的开头与正则表达式模式匹配,则返回相应的MatchObject实例。 如果字符串不与模式匹配,则返回None;请注意,这与零长度匹配不同。
即使在MULTILINE模式下,re.match()也只会在字符串开头匹配,而不会在每行开头匹配。
m = reg.match(r"[a-z]+8?", text)
if m: # Always check if a match occurred to avoid NoneType issues
print(m.group()) # Print the match string
Match.groups
:ccc
和8
并仅显示这些内容,可以使用import re
reg = re.compile("([a-z]+)(8?)")
s = "ccc8"
m = reg.match(s)
if m:
print(m.groups()) # => ('ccc', '8')
查看Python演示
print(reg.match(str).group())
- Avinash Raj