簡體   English   中英

如何為漢字寫正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM