【发布时间】:2018-10-20 18:52:43
【问题描述】:
我正在尝试使用 re.findall 从网页上捕获两种不同的结果。
例如,如果保存存在,我想同时查找“保存 $10.00”和“$100.00”,如果保存不存在,则只需查找“$100”。
我试过save ?\$\d{1,5}。
提前致谢!
【问题讨论】:
我正在尝试使用 re.findall 从网页上捕获两种不同的结果。
例如,如果保存存在,我想同时查找“保存 $10.00”和“$100.00”,如果保存不存在,则只需查找“$100”。
我试过save ?\$\d{1,5}。
提前致谢!
【问题讨论】:
你可以使用
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 时才返回(列表)元组。
【讨论】: