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

如何用Java正则表达式提取两种格式的价格数字?

合并正则匹配两种价格格式的解决方案

没问题,我来帮你把两个正则合并成一个,同时匹配带空格分隔和不带空格的价格格式,还能准确提取价格数字!

最终正则表达式

\bPrice\sR\s(\d+(?:\s\d+)*)

正则各部分解释

让我拆解一下这个正则的逻辑,帮你理解为什么它能同时适配两种格式:

  • \bPrice\sR\s:精准匹配固定前缀“Price R ”,\b确保“Price”是一个完整的单词,避免误匹配类似“XPrice”的字符串;
  • (\d+(?:\s\d+)*):这是捕获价格的核心部分:
    • \d+:匹配开头的一串数字(比如3或者500);
    • (?:\s\d+)*:这是一个非捕获组,(?:...)表示这个组只用于匹配、不会被单独捕获;\s\d+匹配“空格+一串数字”,*表示这个组合可以出现0次或多次——这样既可以匹配不带空格的纯数字(0次),也可以匹配带单个空格的数字(比如3 250),甚至支持多段空格分隔的数字(比如1 000 500这种千分位格式)。

测试示例

  • 对于字符串:Name ProductA Price R 3 250,捕获组会提取到 3 250;
  • 对于字符串:Name ProductA Price R 500,捕获组会提取到 500。

如果之后需要把带空格的价格转换成连续数字(比如把3 250变成3250),只需要对捕获到的结果做一次空格替换操作就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:21:22