[英]Tokenize sentence in word in UTF-8 with special characters
我正在嘗試標記Javascript(node.js)中句子中的單詞,刪除非單詞字符(點,逗號,句號,問號等),同時考慮到UTF-8中每個現有的字母(英語,拉丁文,希臘文,西里爾文,日文等)和數字,這意味着我需要一種方法來知道字符是單詞的一部分還是符號。 例如:
españa.es 4*5 Rußland Citroën, 東京 iphone-pro5
應該返回一個數組:
[españa, es, 4, 5, Rußland, Citroën, 東京, iphone, pro5]
我正在使用以下正則表達式:
[0-9A-Za-zªº\µ\À-\Ö\Ø-\ö\ø-\ʯ\ʰ-\ˁ\Ͱ-\ʹ\Ͷ-\ͷ\ͺ-\ͽ\Ά\Έ-\Ί\Ό\Ύ-\Ρ\Σ-\Ͽ\Ѐ-\ҁ\Ҋ-\ԣ]+
0-9A-Za-z(數字和英文字母)
(º(常規指標)
\\ u00B5(微符號)
\\ u00C0- \\ u00D6 \\ u00D8- \\ u00F6 \\ u00F8- \\ u02AF(非英語拉丁字母)
\\ u02B0- \\ u02C1(修飾詞)
\\ u0370- \\ u0374 \\ u0376- \\ u0377 \\ u037A- \\ u037D \\ u0386 \\ u0388- \\ u038A \\ u038C \\ u038E- \\ u03A1 \\ u03A3- \\ u03FF(希臘字母和科普特字母)
\\ u0400- \\ u0481 \\ u048A- \\ u0523(西里爾字母)
還有其他更簡單或更完整的方法來拆分文本中的單詞嗎?
使用XRegExp
很容易:
var s = "españa.es 4*5 Rußland Citroën, 東京 iphone-pro5"; var r = XRegExp("[\\\\pL\\\\pN]+", "g"); var results = XRegExp.match(s, r); console.log(results);
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.min.js"></script>
[\\\\pL\\\\pN]+
正則表達式模式匹配一個或多個Unicode字母( \\pL
)或數字( \\pN
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.