繁体   English   中英

用特殊字符标记UTF-8中的单词中的句子

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM