【问题标题】:python: regex with '?' and '[]' special characters [duplicate]python:带有 \'?\' 和 \'[]\' 特殊字符的正则表达式 [重复]
【发布时间】: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 percentSuccess 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


【解决方案1】:

[4,6,8,0] 是一个字符类,包括 4,6,8,0 和逗号(它重复多次的事实不是问题)。

逗号使正则表达式有点过于宽松,但它仍然适用于指定的数字。

它还会匹配Success rate is 1,0 percent,因此应该修复它。

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 2011-10-16
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多