我正在尝试使用re.findall
从网页上捕获两个不同的结果。
例如,我想同时找到“保存$ 10.00”和“ $ 100.00”(如果保存存在),如果不存在,则找到“ $ 100”。
我尝试过save ?\$\d{1,5}
。
谢谢!
答案 0 :(得分:0)
您可以使用
re.findall(r'(?:\bsave\s+)?\$\d+(?:\.\d+)?', s)
请参见regex demo。
详细信息
(?:\bsave\s+)?
-可选的非捕获组匹配
\bsave
-整个词save
\s+
-超过1个空格\$
-一个$
字符\d+
-1个以上数字(?:\.\d+)?
-可选的非捕获组匹配
\.
-一个点\d+
-1个以上数字请记住,您需要使用non-capturing groups来构成整个模式序列,因为如果re.findall
仅在模式和causes lots of confusion中定义了捕获组,则仅返回元组(的列表)。 / p>