我有一个关于regex的问题,我需要从文本中提取一个字符串,并在数字中保留空白、逗号和点(如果它存在的话),例如。Lorem impsum the price is:196 000,2545. 20 $ blablabla, Output: 196 000,2545.20
例2:2530002545.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:我实在不明白如何将这两个regexes结合起来,期待您的解答。平安!
这个简单的正则表达式 \d([\d., ]*\d)?
直接忽略前导和尾部的文本和空格,并保留数字之间的点、逗号和空格。
这个正则表达式的Java字符串是 "\\d([\\d., ]*\\d)?"
.
祝贺。
由于你需要提取一个与regex匹配的子串,你可以使用Matcher。要去除尾部的空格,只需修剪匹配的子串即可,试试这个。
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'