You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python正则表达式提取特定标签间内容失败问题求助

解决正则提取含换行字符串内容的问题

你的问题出在正则表达式的默认行为上:re.search里的.默认不匹配换行符,而目标内容4%被换行和空白包围,导致(.*)无法跨换行匹配到内容。

解决方案1:添加re.DOTALL(或re.S)标志

这个标志会让.匹配包括换行在内的所有字符,同时可以用strip()去掉结果前后的空白:

import re

s = '''        <div class="prod-origin-price ">
        <span class="discount-rate">
            4%
        </span>
            <span class="origin-price">'''

result = re.search('<span class="discount-rate">(.*)</span>', s, re.DOTALL)
if result:
    # 用strip()去除前后的换行和空白字符
    print(result.group(1).strip())

解决方案2:用更精准的正则匹配(推荐)

如果只想匹配空白和目标内容,可以用[\s\S]*?代替.*([\s\S]匹配所有字符,*?是非贪婪匹配,避免意外匹配过多内容),同样配合strip():

import re

s = '''        <div class="prod-origin-price ">
        <span class="discount-rate">
            4%
        </span>
            <span class="origin-price">'''

result = re.search('<span class="discount-rate">([\s\S]*?)</span>', s)
if result:
    print(result.group(1).strip())

两种方法都能输出4%,注意要先判断result不为None,避免报错(比如当目标字符串不存在时)。

内容的提问来源于stack exchange,提问作者anfwkdrn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:18:28