【发布时间】:2018-12-04 00:09:29
【问题描述】:
这不是重复的……在我看来。我不是在问它的用处。如果可以的话,我要求澄清定义。不要投反对票,请解释一下。如果我认为其他读者愚蠢,我会删除这篇文章。
f=re.match(pattern, str)
pattern= '(?:animal)(?:=)((\w+),)+'
str = 'animal=cat,dog,cat,tiger,dog\nanimal=cat,cat,dog,dog,tiger\nanimal=dog,dog,cat,cat,tiger'
这样显示
animal=cat,dog,cat,tiger,dog
animal=cat,cat,dog,dog,tiger
animal=dog,dog,cat,cat,tiger
如果 ?: 之后的内容应该是 ' 正则括号的非捕获版本。匹配括号内的任何正则表达式,但组匹配的子字符串在执行匹配后无法检索或稍后在模式中引用。'
为什么它仍然返回字符串 'animal='?
(Python 3.6.3) f 是:
<_sre.SRE_Match object; span=(0, 25), match='animal=cat,dog,cat,tiger,'>
f[0]
'animal=cat,dog,cat,tiger,'
f[1]
'tiger,'
f[2]
'tiger'
【问题讨论】:
-
你在困惑什么?你期待什么结果?
-
本质上,非捕获组会寻找某种模式,但实际上并不将其包含在匹配中。
-
那为什么是彩色的呢?如果要排除某个术语/短语..还有其他功能可以使用,例如负前瞻
-
蓝色是匹配的,regex101 上的任何其他颜色都是捕获组。
-
'但组匹配的子字符串在执行匹配后无法检索或在模式中稍后引用。'意思..所以我尝试用该命令替换
re.match(str, pattern)中的pattern,它返回错误为invalid syntax..