[英]How to write regex expression for chinese character
我需要知道我們如何將漢字編譯成以下單詞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}+
請參閱正則表達式演示
在Java中:
String rx = "\\d+(?:,\\d{3})*\\s*(?:(?:-|or)\\s*\\d+(?:,\\d{3})*\\s*)?\\p{L}+";
注意:如果您不太關心正則表達式的精度(例如,只提取這些子串),您可以將\\\\d+(?:,\\\\d{3})*
縮短為\\d[\\d,]*
。 看另一個正則表達式演示 。
細節
\\d+
- 1位或更多位數 (?:,\\d{3})*
- 0+連續的序列,
和3位數字 \\s*
- 0+空格 (?:(?:-|or)\\s*\\d+(?:,\\d{3})*\\s*)?
- 匹配的1或0個序列(可選的序列)
(?:-|or)
- a -
或or
\\s*
- 0+空格 \\d+(?:,\\d{3})*
- 如上所示的數字模式 \\s*
- 0+空格 \\p{L}+
- 1+ Unicode字母。 你可以按原樣編寫。 Java支持Unicode。 試試這一行
System.out.println("積分".matches(".分"));
它打印真實
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.