首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python 3中打印正则表达式匹配结果?

如何在python 3中打印正则表达式匹配结果?
EN

Stack Overflow用户
提问于 2014-10-18 17:41:44
回答 2查看 21.5K关注 0票数 6

我处于空闲状态,决定使用正则表达式对字符串进行排序。但当我输入在线教程告诉我要做的事情时,它只会打印出来:

代码语言:javascript
复制
<_sre.SRE_Match object at 0x00000000031D7E68>

完整计划:

代码语言:javascript
复制
import re
reg = re.compile("[a-z]+8?")
str = "ccc8"
print(reg.match(str))

结果:

代码语言:javascript
复制
<_sre.SRE_Match object at 0x00000000031D7ED0>

有人能告诉我如何实际打印结果吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-18 17:43:47

您需要在match函数中包含.group() after,以便打印匹配的字符串,否则它只显示是否发生了匹配。要打印捕获组捕获的字符,需要将对应的组索引传递给.group()函数。

代码语言:javascript
复制
>>> import re
>>> reg = re.compile("[a-z]+8?")
>>> str = "ccc8"
>>> print(reg.match(str).group())
ccc8

带有捕获组的正则表达式。

代码语言:javascript
复制
>>> reg = re.compile("([a-z]+)8?")
>>> print(reg.match(str).group(1))
ccc

re.match(pattern,string,flags=0)

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回相应的MatchObject实例。如果字符串与模式不匹配,则返回None;请注意,这不同于零长度匹配。

请注意,即使在多行模式下,re.match()也只会匹配字符串的开头,而不是每行的开头。

票数 11
EN

Stack Overflow用户

发布于 2020-04-02 16:13:39

如果您需要获取整个匹配值,您应该使用

代码语言:javascript
复制
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到模式中有多少个组。默认参数用于未参与匹配的组;它默认为无。

因此,要获取ccc8并只显示它们,您可以使用

代码语言:javascript
复制
import re
reg = re.compile("([a-z]+)(8?)")
s = "ccc8"
m = reg.match(s)
if m:
  print(m.groups()) # => ('ccc', '8')

请参阅Python demo

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26438345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档