我的任务是从带有数字和一些文本的字符串中解析整数值。可以使用不同的区域设置来格式化数字:
15 000 km
15,000 km
15.000 km
我有一个解决方案:
(\d+[[\s\.,]?\d+]*)
适用于上述示例。 但作为一种边缘情况,有一个特殊的输入机智代码 160,而不是常规空间(代码 32):
15 000 km
如何使用 java 中的正则表达式实现来解决这个问题?
拨弄它:http://java-regex-tester.appspot.com/regex/5d8dd002-fe68-40c3-bf82-42e8574a2f5c
理想情况下,我希望有一个通用的解决方案,可以使用任何不可打印的字符。
最佳答案
您可以使用 Pattern.UNICODE_CHARACTER_CLASS
标志来让您的 \s
Unicode 识别:
String pattern = "(?U)\\d+[\\s.,]?\\d+";
^^^
参见Java demo :
String value1 = "15 000 km\n15,000 km\n15.000 km\n15 000 km";
String pattern1 = "(?U)\\d+[\\s.,]?\\d+";
Pattern ptrn = Pattern.compile(pattern1);
Matcher matcher = ptrn.matcher(value1);
while (matcher.find())
System.out.println(matcher.group(0));
输出:
15 000
15,000
15.000
15 000
关于java - 处理 Java 正则表达式中的 unicode 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39477637/