【问题标题】:Trying to use re.findall to capture two different outcomes尝试使用 re.findall 来捕捉两种不同的结果
【发布时间】:2018-10-20 18:52:43
【问题描述】:

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

例如,如果保存存在,我想同时查找“保存 $10.00”和“$100.00”,如果保存不存在,则只需查找“$100”。

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

提前致谢!

【问题讨论】:

    标签: regex findall


    【解决方案1】:

    你可以使用

    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 时才返回(列表)元组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多