用特殊字符在 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

应该return一个数组:

[españa, es, 4, 5, Rußland, Citroën, 東京, iphone, pro5]

我正在使用以下正则表达式:

[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]+

0-9A-Za-z (numbers and English letters)

ªº (ordinal indicators)

\u00B5 (micro sign)

\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02AF (non-english latin letters)

\u02B0-\u02C1 (modifier letters)

\u0370-\u0374\u0376-\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03FF (greek and Coptic alphabets)

\u0400-\u0481\u048A-\u0523 (cyrillic alphabet)

是否有其他更简单或更完整的方法来拆分文本中的单词?

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)。