java - 处理 Java 正则表达式中的 unicode 符号

标签 java regex parsing regex-greedy

我的任务是从带有数字和一些文本的字符串中解析整数值。可以使用不同的区域设置来格式化数字:

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/

相关文章:

php - 验证新西兰电话号码的正则表达式

当 "src"值不同时,捕获 <img> 标签的正则表达式失败

java - Xodus:是否有键和/或值的最大长度?

java - 编译程序集:single error

java - Spring Boot - 在属性设置时创建 bean,否则创建默认 bean

xml - 不使用循环解析 XML 文件?

PHP 将 CSV 转换为特定的 JSON 格式

java - android JVM 也可以在 PC 上运行吗?

JavaScript 匹配函数似乎停止了脚本

parsing - 在 ANTLR 中,是否有表示一组规则的所有排列的交替的快捷符号?