我有一个可以用以下几种格式之一显示数字的字符串:
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