具有不同格式的 Java Regex 数字提取

标签 java regex

我有一个字符串,可以以几种格式之一显示数字:

Name ProductA Price R 3 250

或者

Name ProductA Price R 500

我不知道价格会以哪种格式显示,所以我想同时查找这两种格式。 我知道第一个字符串的正则表达式是:

\\bPrice\\sR\\s\\b*(\\d\\s\\d+)

第二个是:

\\bPrice\\sR\\s\\b*(\\d+)

但是 Regex 会如何检查两者并捕获价格数字?

最佳答案

使 \\s\\d 部分可选,如下所示:

\\bPrice\\sR(?:\\s(\\d))?\\s(\\d+)
--          ^^^^^^^^^^^^^

请注意,可选部分组是非捕获,让您可以通过捕获组 1 和 2 检索价格的相关部分。

Demo.

关于具有不同格式的 Java Regex 数字提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50448452/

相关文章:

java - 使用相同代码写入写字板与写入记事本时的结果不同

java - 如何使用给定的时间戳将第一个月和最后一个月构建为时间戳?

基于 Java EE 7 表单的身份验证

java - 使用 Json-lib 将 XML 转为 Json

php - preg_replace 问题

java - 从 JButton ActionPerformed 调用耗时的方法

javascript - 使用正则表达式匹配字符串的相同开始和结束字符

javascript - 将正则表达式翻译为 PHP

mysql - 匹配除换行符之外的任何字符(mysql 正则表达式)

Ruby:反斜杠字符串中的所有非字母数字字符