1-گروهجوانانخلاق
2-(نی(حیایتکنندهرسانههایآزادافغانستان
3-نی| حمایتکنندهرسانههایآزادافغانستان
4- NKCC(Nawi Kunduz建筑公司)
5-阿富汗发展和登记处服务
我想要做的是获得每个句子最多3个单词的第一个字母。 我尝试过:
\b(?:(?:[a-zA-Z0-9])|(?:[\u0621-\u0628\u062A-\u063A\u0641-\u0642\u0644-\u0648\u064E-\u0651\u0655\u067E\u0686\u0698\u06A9\u06AF\u06BE\u06CC]))
以上的正则表达式仅用于英语句子,我的主要问题是\b
用于波斯语句子,并强制只考虑最多3个单词。
答案 0 :(得分:1)
您可以构建一个首先匹配字符串开头或除字(字母和数字)字符以外的任何字符的正则表达式,然后捕获第一个字母/数字,但只收集前3个匹配项:
var strs = ["|گروه جوانان خلاق", "(نی (حمایت کننده رسانه های آزاد افغانستان", "نی | حمایت کننده رسانه های آزاد افغانستان", "NKCC (Nawi Kunduz Construction Company)","5- Afghanistan Development And Registry Services"];
var pblock = "\\u0621-\\u0628\\u062A-\\u063A\\u0641-\\u0642\\u0644-\\u0648\\u064E-\\u0651\\u0655\\u067E\\u0686\\u0698\\u06A9\\u06AF\\u06BE\\u06CC";
var rx = new RegExp("(?:^|[^a-zA-Z0-9" + pblock + "])([a-zA-Z0-9" + pblock + "])", "g");
for (var s of strs) {
var m, cnt=0, res=[];
while (m=rx.exec(s)) {
if (cnt < 3) {
res.push(m[1]);
cnt++;
} else break;
}
console.log(s, res);
}