我有这个模式p
并希望使用此模式来查找它是否有任何匹配。这是在Python中。
p = "keyword" + ".*?(\d+(\.\d+)?[\s%]?[\w/]*)"
found = re.findall(p, some_text)
我在解析此正则表达式时遇到问题。
第一个"?"是什么?
我理解"。*"匹配任何东西0次或更多次。但不确定"?"在这里。
看到嵌套的捕获组括号是很奇怪的。它做了什么?
什么是"?"在[\s%]?
正则表达式?我假设这是匹配的空格,后跟"%"。但不确定"?"在这里。
[\w/]*
正则表达式中的星号是什么?我假设这匹配任何单词字符后跟正斜杠。但不确定" *"确实
答案 0 :(得分:2)
.*?(\d+(\.\d+)?[\s%]?[\w/]*)
.*?
匹配任何字符(行终止符除外)
*?
量词 - 零和无限次之间的匹配,尽可能少,根据需要扩展(懒惰)(\d+(\.\d+)?[\s%]?[\w/]*)
\d+
匹配一个数字(等于[0-9]
)量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)(\.\d+)?
\.
匹配角色。字面意思(区分大小写)[\s%]?
匹配\r
或\n
或\t
或\f
或\v
%
匹配字符%字面(区分大小写)[\w/]*
,其中\w
匹配a-zA-Z0-9_
/
匹配字符/字面(区分大小写)您可以将正则表达式放在here中,并在网站的右上角进行分析。