如何从正则表达式匹配中排除部分字符串(阿拉伯语字典示例)

时间:2017-09-10 15:18:37

标签: javascript regex match

我有这样的字符串:

var str = "translation1; translation2; اللغة العربية example1; اللغة العربية example2; اللغة العربية example3; اللغة العربية example4; اللغة العربية example5; اللغة العربية example6; اللغة العربية example7; اللغة العربية example8; اللغة العربية example9";

这是单词翻译,在他们举例后,我认为像2个分号之间的阿拉伯字母。我需要将翻译和示例分开,并仅使用示例获取数组:

["اللغة العربية example1", "اللغة العربية example2", .... ]

我试过这段代码:

var str = "translation1; translation2; اللغة العربية example1; اللغة العربية example2; اللغة العربية example3; اللغة العربية example4; اللغة العربية example5; اللغة العربية example6; اللغة العربية example7; اللغة العربية example8; اللغة العربية example9;"; 
var match = "";
var example_pattern = /;([\s\S]+?[ا-ي]+?[\s\S]+?);/ig
var examples = [];
while (match = example_pattern.exec(str)) {
                    examples.push(match[1]); 
                    example_pattern.lastIndex --; 
                }
console.log(examples);

但它返回示例[0] =“translation2;اللغةالعربيةexample1;”。

如何删除“translations2;”来自example1中的匹配?

其余元素执行得很好。

(我发了example_pattern.lastIndex --;因为没有代码只返回第1,第3,第5,第7,第9个例子的数组。可能有办法让regexp example_template更好)

1 个答案:

答案 0 :(得分:0)

这是如此愚蠢的错误。我只是通过在正则表达式“example_pattern”

的开头删除\ S来解决问题