有什么情况不能用re.search代替re.match吗?

问题描述 投票:0回答:1

文档看起来很清楚,但它引出了一个问题,re.match 的目的是什么?只要未启用 MULTILINE 标志,就不能使用带有脱字符号 (^) 的 re.search 来代替吗?添加 re.match 是否只是为了使验证更容易,而不必一直在开头写插入符号?

re.search('^test \w+', 'test example')
re.match('test \w+', 'test example')
的加工方式有什么区别吗?结果匹配似乎是相同的,尽管很难正确评估,因为 Match 对象没有实现
__eq__
方法。

如果我们可以相信这位 StackOverflow 用户,那么 re.match 甚至不会提供任何性能优势。那它还有什么意义呢?只是为了提高可读性?

python regex search match python-re
1个回答
0
投票

文档对此进行了介绍

search()
match()

MULTILINE 模式下

match()
仅匹配字符串的开头,而将
search()
与以
'^'
开头的正则表达式一起使用将匹配每行的开头。

>>> re.match("X", "A\nB\nX", re.MULTILINE)  # No match
>>> re.search("^X", "A\nB\nX", re.MULTILINE)  # Match
<re.Match object; span=(4, 5), match='X'>
© www.soinside.com 2019 - 2024. All rights reserved.