python重新编译(“regex”).search返回span(0,0)match=“”

2024-04-16 15:47:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中使用re库已经有一段时间了。 然而,有件事我不明白

pattern = re.compile('[.]')
result = pattern.search('abcde')
print(result)

上面返回:<_sre.SRE_Match object; span=(0, 0), match=''>

而:

pattern = re.compile('.')
result = pattern.search('abcde')
print(result)

这将返回:<_sre.SRE_Match object; span=(0, 1), match='a'>

Q1:在python中搜索'[.]''.'有什么区别

Q2:我知道在'abcd'中搜索'a'返回'span=(0, 1)'。但是'span=(0, 0)'实际上意味着什么呢


Tags: researchobjectmatchresultpatternspanprint
2条回答

您使用的是什么版本的Python?我在3.7上,第一个为我返回None

执行[]时,指定要匹配集合中的字符.不再是通配符,它试图匹配字符串中的实际句点

Q1: What is the difference between searching for '[.]' and '.' in python?

答:区别在于正则表达式的工作方式,而不是python本身

您可能知道.(点)是一个正则表达式元字符,用于匹配任何一个字符,方括号[]用于匹配一个特定位置的多个不同字符。在括号内使用点,即[.]将按字面意思匹配字符.,并且在第一个示例中,由于它不存在于字符串abcde中,因此无法获得匹配

Q2: I understand that searching 'a' in 'abcd' returns 'span=(0, 1)'. But what does 'span=(0, 0)' actually mean?

回答:span()返回可能匹配的长度

由于在第一个示例中没有得到任何匹配,因此长度设置为零,因此span=(0, 0), match=''其中match是一个空字符串

相关问题 更多 >