我的正则表达式有问题,我需要从文本中提取一个字符串,并在数字中保留空白、昏迷和点(如果存在的话(,例如:Lorem impsum价格为:196 0002545.20$blablabla,输出:
196 0002545.20
示例:2530002545.20英镑,输出:
2530002545.20
我做了以下事情:
String exampleStr = "Lorem impsum the price is:196 000,2545.20 $ blablabla"
String result = exampleStr.replaceAll("[^\d.,]", " ")
.replaceAll(/s*$/,'')
首先替换所有不是空格、逗号、点或空格的内容(以保持数字(,然后从字符串末尾删除空格。这个解决方案是有效的,但我想以一种更合适的方式重新做,将空白区域保留在内部,并从"价格"的开始和结束处删除其他空白区域。Ps:我真的不明白如何结合这两个正则表达式,期待你的回答。和平
这个简单的正则表达式d([d., ]*d)?
直接忽略前导和尾随文本以及空格,并保留数字之间的点、逗号和空格。
此RegExp的Java字符串为"\d([\d., ]*\d)?"
。
谨致问候。
由于需要提取与正则表达式匹配的子字符串,因此可以使用Matcher。要获得rid或尾随空格,只需修剪匹配的子字符串。试试这个:
String exampleStr = "Lorem impsum the price is:196 000,2545.20 $ blablabla2:2530002545.20 £";
Pattern pattern = Pattern.compile("\d[\s\d.,]+");
Matcher matcher = pattern.matcher(exampleStr);
while (matcher.find()) {
System.out.println("'" + matcher.group().trim() + "'");
}
输出:
'196 000,2545.20'
'2530002545.20'