我处于空闲状态,决定使用正则表达式对字符串进行排序。但当我输入在线教程告诉我要做的事情时,它只会打印出来:
<_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>有人能告诉我如何实际打印结果吗?
发布于 2014-10-18 17:43:47
您需要在match函数中包含.group() after,以便打印匹配的字符串,否则它只显示是否发生了匹配。要打印捕获组捕获的字符,需要将对应的组索引传递给.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))
cccre.match(pattern,string,flags=0)
如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例。如果字符串与模式不匹配,则返回None;请注意,这不同于零长度匹配。
请注意,即使在多行模式下,re.match()也只会匹配字符串的开头,而不是每行的开头。
发布于 2020-04-02 16:13:39
如果您需要获取整个匹配值,您应该使用
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如果需要提取正则表达式匹配的一部分,则需要在正则表达式中使用。用一对未转义的括号将这些模式括起来。
要仅打印捕获的组结果,请使用
返回一个包含匹配的所有子组的元组,从1到模式中有多少个组。默认参数用于未参与匹配的组;它默认为无。
因此,要获取ccc和8并只显示它们,您可以使用
import re
reg = re.compile("([a-z]+)(8?)")
s = "ccc8"
m = reg.match(s)
if m:
print(m.groups()) # => ('ccc', '8')请参阅Python demo
https://stackoverflow.com/questions/26438345
复制相似问题