如何编写正则表达式从指定HTML中提取价格数值75.00?
提取HTML中价格数值的正则方案
嘿,我来帮你搞定这个正则问题!你写的雏形<td>$*/<span class='small font-weight-bold text-danger'>是有问题的,主要有两个核心问题:
$是正则里的特殊字符(代表行尾锚点),直接写的话没法匹配HTML里的美元符号,必须转义成\$*是量词(匹配前面元素0次或多次),但你这里$后面直接跟*,逻辑上没法精准定位到价格数值
针对你给出的HTML代码:
$75.00/Piece *some more text here*
我给你两种靠谱的正则方案:
方案1:精准匹配固定结构
/<td>\$(\d+\.\d+)\/<span class='small font-weight-bold text-danger'>/
逻辑解释:
<td>\$:匹配<td>标签后紧跟的美元符号(\$转义后才能匹配真实的$字符)(\d+\.\d+):捕获组,专门提取「整数部分+小数点+小数部分」的数值,也就是你要的75.00\/<span class='small font-weight-bold text-danger'>:匹配价格后的/和指定的span起始标签(/也要转义成\/,避免和正则的分隔符冲突)
方案2:兼容微小格式变化(比如空格)
如果HTML里可能存在多余空格(比如<td> $75.00 / <span...>),可以用带空白匹配的版本:
/<td>\s*\$(\d+\.\d+)\s*\/\s*<span class='small font-weight-bold text-danger'>/
逻辑解释:
\s*:匹配0个或多个空白字符(空格、制表符等),兼容HTML里可能出现的格式差异
额外提醒
虽然正则能解决这个问题,但如果是长期处理HTML内容,更推荐用专业的HTML解析库(比如Python的BeautifulSoup、Java的Jsoup),因为HTML结构一旦有微小调整(比如标签属性顺序变化),正则很容易失效,而解析库能更稳定地提取内容。
内容的提问来源于stack exchange,提问作者javafrapp90
相关产品推荐
相关产品推荐

