【发布时间】:2022-11-24 01:18:11
【问题描述】:
我在 python 代码中看到了以下 RE 模式:
import re
...
pattern = "Success.rate.is.1?[4,6,8,0]0.percent"
re.search(pattern, res)
通常像Success rate is 100 percent 或Success rate is 85 percent 等字符串在res 参数中传递。我不明白的是:
- 为什么我们在模式定义中需要特殊字符
.?这匹配任何除换行符外的字符。 - 应用
?模式的哪一部分? - 为什么我们不能只使用
[4680](如果我对文档的理解正确的话),这样我们就可以单独匹配'4'、'6'、'8'和'0',为什么我们需要','符号?
【问题讨论】:
-
它有效,也匹配
,。这是一个错字 -
我推荐regex101.com。您可以输入正则表达式和字符串。它将准确解释匹配成功或失败的原因。
-
这里有多个问题,每个问题都是一个FAQ项。我不应该向网站 11 年的用户解释这一点,但 you are expected 在提问之前尝试基础研究,并在每个帖子中问一个问题。堆栈溢出是不是论坛也不是补习中心;我们通常不能教如何理解正则表达式。除此之外,您似乎在回答自己的问题:“这匹配除换行符以外的任何字符。” - 所以,编写正则表达式的人希望任何字符在那个时候匹配。
-
有时人们编写的代码以奇怪的方式工作,只要它通过了测试(正式或非正式)。在不知道作者的设计限制的情况下,我们无法回答“为什么需要 X”,尤其是在没有实际情况的情况下知道它是需要。一般来说,requests to explain someone else's code are not suitable here;最好问的人是作者。
标签: python python-3.x regex