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

Name ProductA Price R 3 250


要么

Name ProductA Price R 500


我不知道价格会以哪种格式出现,因此我想同时查找两者。
我知道第一个String的正则表达式是:

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


第二个是:

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


但是,正则表达式看起来会同时检查并捕获价格数字吗?

最佳答案

您可以为以下数字提供一个可选的组(捕获第一组的价格):

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


字符串文字:\\bPrice\\sR\\s(\\d+(?:\\s\\d+)?)

分解:


\bPrice\sR\s匹配文字字符串Price R
(开始捕获第一组


\d+匹配数字序列
(?:\s\d+)?匹配空格前面的一组数字(如果存在),不包含组

)捕获组结束


或使用正向后视将价格归入组0

(?<=\bPrice\sR\s)\d+(?:\s\d+)?


字符串文字:(?<=\\bPrice\\sR\\s)\\d+(?:\\s\\d+)?

Live demo

10-07 14:28