我试图用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ªº\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(数字和英文字母)
ªº(序数指标)
\ u00B5(微信号)
\ u00C0- \ u00D6 \ u00D8- \ u00F6 \ u00F8- \ u02AF(非英语拉丁字母)
\ u02B0- \ u02C1(修饰符)
\ u0370- \ u0374 \ u0376 \ u037A \ \ u037D \ u0386 \ u0388- \ u038A \ u038C \ u038E- \ u03A1 \ u03A3- \ u03FF(希腊文和科普特字母)
\ u0400- \ u0481 \ u048A- \ u0523(西里尔字母)
还有其他更简单或更完整的方法来分割文字中的单词吗?
答案 0 :(得分:3)
使用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>
&#13;
[\\pL\\pN]+
正则表达式模式匹配一个或多个Unicode字母(\pL
)或数字(\pN
)。