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