javascript, regex analyse le contenu de la chaîne entre accolades
je suis nouveau sur le regex. Je suis en train d'analyser toutes les matières à l'intérieur des accolades dans une chaîne de caractères. J'ai regardé ce post comme une référence et a fait exactement comme l'une des réponses suggèrent, cependant, le résultat est inattendu.
Voici ce que j'ai fait
var abc = "test/abcd{string1}test{string2}test" //any string
var regex = /{(.+?)}/
regex.exec(abc) //i got ["{string1}", "string1"]
//where i am expecting ["string1", "string2"]
je pense que je suis absent quelque chose, ce que je fais mal?
mise à jour
j'ai été capable de le faire avec /g
pour une recherche globale
var regex = /{(.*?)}/g
abc.match(regex) //gives ["{string1}", "{string2}"]
comment puis-je obtenir de la chaîne w/o entre parenthèses?
source d'informationauteur MengQi Han
Vous devez vous connecter pour publier un commentaire.
produit
Il suppose que chaque
}
a un correspondant{
avant et{...}
sections ne sont pas de nid. Il ne sera également pas de capturer le contenu de vide{}
sections.Essayez ceci:
un bon endroit pour en savoir plus sur les Regex en javascript est iciet un endroit agréable pour test est ici
bonne chance!
Rien de mal. Mais vous aurez besoin de regarder votre capture des groupes (le deuxième élément dans le tableau) pour obtenir le contenu que vous voulais (vous pouvez ignorer le premier). Pour obtenir toutes les occurrences, il ne suffit pas de courir
exec
une fois, vous aurez besoin pour passer en boucle sur les résultats à l'aidematch
.Modifier: passons sur le fait que, autant que je sache, vous ne pouvez pas accéder à la capture de groupes avec
match
. Une solution plus simple serait d'utiliser une anticipation positif, comme Mike Samuel suggéré.Ce résultat:
est de vous montrer que pour le premier match, l'ensemble de la regex appariés
"{string1}"
et la première parenthèse capturante appariés"string1"
.Si vous voulez obtenir tous les matchs et voir capture parens de chaque match, vous pouvez utiliser le bouton "g" drapeau et en boucle, en appelant
exec()
plusieurs fois comme ceci:Vous pouvez le voir à l'œuvre ici: http://jsfiddle.net/jfriend00/sapfm/