如何从文本文件中提取语言列表?



假设你有很多文本文件它们都包含这样一行:

Sprachen: Deutsch, Englisch
Spricht: Englisch; 
Italienisch
Sprachen: wenig Deutsch, Englisch
sprachen:ndeutsch russisch
spricht: wenig Englisch Russischn
etc...

如何将列出的语言提取到字符串数组中?

我构造了一个正则表达式:

(sprachen*|spricht):+s*(w+[s,;]*w*)

但是在列表的第二个单词之后无法匹配。如果第二个和第三个单词之间有空格。所以我不能得到完整的语言列表。

如果你事先不知道所有可能的语言列表,另一种方法是在处理之前清理字符串:您可以将其转换为小写,替换所有出现的额外单词('sprachen', ' spright ', '等等…', 'wenig',)和分隔符(冒号,分号,)。
这样就很容易找到所有的语言了。

let str = `Sprachen: Deutsch, Englisch
Spricht: Englisch; 
Italienisch
Sprachen: wenig Deutsch, Englisch
sprachen:ndeutsch russisch
spricht: wenig Englisch Russischn
etc...`;
str = cleanStr(str);
let langs = [];
str.split('n').forEach(row => {
row = row.trim();
if (row) {
row.split(' ').forEach(lang => {
lang = lang.trim();
if (!langs.includes(lang)) {
langs.push(lang);
}
});;
}
});
console.log(langs);
function cleanStr(str) {
str = str.toLowerCase();
str = str.replace(/(sprachen|spricht):(s)+/g, '');
str = str.replace(/wenig /g, '');
str = str.replace(/;/g, '');
str = str.replace(/,/g, '');
str = str.replace(/etc.../g, '');
return str;
}

最新更新