我需要知道我们如何将汉字编译成下面的词
50,001 - 100,000
积分
例如:英文写法:50,001 - 100,000
点。这是英文写法
Pattern pattern = Pattern.compile("([A-Z]+\\s[A-Z]+)|(\\d+\\s(\\-|or)\\s(\\d|[a-z])+\\s"+Internationalization.getMessage("POINTS_RANGE_FILTER_POINTS")+")"
最佳答案
您可以使用 \p{L}
Unicode 属性类来匹配任何 Unicode 字母。此外,您的模式需要进行一些调整以匹配整个数字。请参阅下面的修复:
\d+(?:,\d{3})*\s*(?:(?:-|or)\s*\d+(?:,\d{3})*\s*)?\p{L}+
参见 regex demo
在 Java 中:
String rx = "\\d+(?:,\\d{3})*\\s*(?:(?:-|or)\\s*\\d+(?:,\\d{3})*\\s*)?\\p{L}+";
注意:如果您不太关心正则表达式的精度(例如,当只提取这些子字符串时),您可以缩短 \\d+(?:,\\d{3})*
到 \d[\d,]*
。参见 another regex demo .
详情
\d+
- 一位或多位数字(?:,\d{3})*
-、
和 3 位数字的 0+ 个连续序列\s*
- 0+ 个空格(?:(?:-|or)\s*\d+(?:,\d{3})*\s*)?
- 1 或 0 个序列(一个可选的) 匹配(?:-|or)
--
oror
\s*
- 0+ 个空格\d+(?:,\d{3})*
- 上面的数字模式\s*
- 0+ 个空格
\p{L}+
- 1+ Unicode 字母。
关于java - 如何为汉字编写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47450570/