如何对数字进行regex,并在输出字符串中保留逗号、空格和点?

问题描述 投票:-1回答:1

我有一个关于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结合起来,期待您的解答。平安!

java regex string replaceall
1个回答
2
投票

这个简单的正则表达式 \d([\d., ]*\d)? 直接忽略前导和尾部的文本和空格,并保留数字之间的点、逗号和空格。

这个正则表达式的Java字符串是 "\\d([\\d., ]*\\d)?".

祝贺。


1
投票

由于你需要提取一个与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'
© www.soinside.com 2019 - 2024. All rights reserved.