正则表达式匹配解析

时间:2017-01-19 06:17:18

标签: python regex python-3.x

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

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

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

  1. 第一个"?"是什么?

    我理解"。*"匹配任何东西0次或更多次。但不确定"?"在这里。

  2. 看到嵌套的捕获组括号是很奇怪的。它做了什么?

  3. 什么是"?"在[\s%]?正则表达式?我假设这是匹配的空格,后跟"%"。但不确定"?"在这里。

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

1 个答案:

答案 0 :(得分:2)

.*?(\d+(\.\d+)?[\s%]?[\w/]*)
  1. .*?匹配任何字符(行终止符除外) *?量词 - 零和无限次之间的匹配,尽可能少,根据需要扩展(懒惰)
  2. 第一捕获小组(\d+(\.\d+)?[\s%]?[\w/]*)
  3. \d+匹配一个数字(等于[0-9])量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
  4. 第二捕获小组(\.\d+)?
  5. \.匹配角色。字面意思(区分大小写)
  6. [\s%]?匹配\r\n\t\f\v
  7. 中的单个字符
  8. %匹配字符%字面(区分大小写)
  9. [\w/]*,其中\w匹配a-zA-Z0-9_
  10. 中的单个字符
  11. /匹配字符/字面(区分大小写)
  12. 您可以将正则表达式放在here中,并在网站的右上角进行分析。