2017-09-10 2 views
0

j'ai chaîne comme ceci:comment exclure une partie de la chaîne de mise en correspondance regex (exemples dictionnaire arabe)

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

Il est la traduction de mots, après les va exemples, sorcière j'identifions comme des lettres arabes entre 2 points-virgules. Je dois séparer entre les traductions et des exemples, et obtenir tableau uniquement avec des exemples:

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

J'ai essayé ce code:

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

Mais il renvoie des exemples [0] = " traduction2; اللغة العربية exemple1; ".

Comment supprimer "translations2;" de correspondance dans l'exemple 1?

Le reste des éléments s'exécute correctement.

(je fait example_pattern.lastIndex --; parce que sans elle le code retourne un tableau uniquement avec 1er, 3d, 5e, 7e, 9e exemples. Peut être il y a un moyen de faire mieux regexp example_template)

+0

Qu'en est-il juste ['str.match (/ [ا-ي] +/g)'] (https://jsfiddle.net/0vouaLe0 /) pour correspondre à tout morceau de 1+ lettres arabes? –

Répondre

0

Il était erreur si stupide. J'ai résolu le problème en supprimant \ S au début de regex "example_pattern"