尝试使用re.findall捕获两个不同的结果

时间:2018-10-20 18:52:43

标签: regex findall

我正在尝试使用re.findall从网页上捕获两个不同的结果。

例如,我想同时找到“保存$ 10.00”和“ $ 100.00”(如果保存存在),如果不存在,则找到“ $ 100”。

我尝试过save ?\$\d{1,5}

谢谢!

1 个答案:

答案 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>