我需要知道如何将汉字编成以下单词
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")+")"
答案 0 :(得分:1)
您可以使用\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})*
- 0个连续的,
和3位数\s*
- 0+ whitespaces (?:(?:-|or)\s*\d+(?:,\d{3})*\s*)?
- 匹配的1或0个序列(可选的序列)
(?:-|or)
- -
或or
\s*
- 0+ whitespaces \d+(?:,\d{3})*
- 上面的数字模式\s*
- 0+ whitespaces \p{L}+
- 1+ Unicode字母。答案 1 :(得分:0)
您可以按原样编写。 Java支持Unicode。试试这一行
System.out.println("積分".matches(".分"));
它打印真实