【问题标题】:regex matching parsing [closed]正则表达式匹配解析
【发布时间】:2017-01-19 06:17:18
【问题描述】:

我有这个模式p 并且想使用这个模式来查找它是否有任何匹配。这是在 Python 中。

p = "keyword" + ".*?(\d+(\.\d+)?[\s%]?[\w/]*)" found = re.findall(p, some_text)

我在解析这个正则表达式时遇到问题。

  1. 第一个“?”是什么。

    我知道“.*”匹配任何事物 0 次或更多次。但不确定“?”是什么?在这里做。

  2. 看到嵌套的捕获组括号很奇怪。它有什么作用?

  3. 什么是“?”在[\s%]? 正则表达式中?我认为这是匹配空格后跟“%”。但不确定“?”是什么?在这里做。

  4. [\w/]* 正则表达式中的星号是什么?我假设这匹配任何单词字符,后跟正斜杠。但不确定“*”的作用。

【问题讨论】:

标签: python regex python-3.x


【解决方案1】:
.*?(\d+(\.\d+)?[\s%]?[\w/]*)
  1. .*? 匹配任何字符(行终止符除外) *? Quantifier — 匹配零次到无限次,尽可能少,根据需要扩展(惰性)
  2. 第一捕获组(\d+(\.\d+)?[\s%]?[\w/]*)
  3. \d+ 匹配一个数字(等于 [0-9]) 量词 - 匹配一次到无限次,尽可能多次,根据需要回馈(贪婪)
  4. 第二抓捕组(\.\d+)?
  5. \. 匹配字符 。字面意思(区分大小写)
  6. [\s%]? 匹配 \r\n\t\f\v 中存在的单个字符
  7. % 从字面上匹配字符 %(区分大小写)
  8. [\w/]* ,其中 \w 匹配 a-zA-Z0-9_ 中存在的单个字符
  9. / 匹配字符 / 字面意思(区分大小写)

您可以将您的正则表达式放入here 并在网站的右上方获取分析。

【讨论】:

  • 非常感谢。我还有几个问题。 10.[\s%]?----“?”是什么意思在这里做吗? 11.[\w/\]*----这里的“*”是做什么的? 12. 这个正则表达式主要用于我的目的。但我还需要能够从“KeyA: 5555\n KeyB:”之类的文本中提取数字。在这种情况下,我想提取数字 5555,但这个正则表达式提取“5555\n KeyB”。你知道怎么修改吗?请注意,我仍然需要匹配 % 和正斜杠之类的内容(即我无法从正则表达式中删除它们)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 2019-03-30
  • 2011-05-01
相关资源
最近更新 更多