2016-10-22 1 views
1

J'ai un regexRegex valeur de clé paire

(\w+)\s*:((?:\w+[-+*%])*?\w+)$ 

que matchs valeur paire de clés comme celles-ci -

clé: valeur

key2: valeur2

Mais la regex matc héchoue si la clé et la valeur sont entre guillemets comme ceux-ci -

"clé": valeur

"key2": "valeur2"

Quelle modification peut être fait pour faire la regex match clé et la valeur entre guillemets aussi?

+0

'clé et la valeur sont dans la paranthesis' => vous voulez dire? – anubhava

+0

oui. Je veux dire cité. –

+0

Vous dites "entre parenthèses" (pas "paranthésis") mais l'exemple que vous donnez les montre entre guillemets. De toute façon, s'il vous plaît ne pas choisir la syntaxe littérale de l'objet à part avec regexps. Pourquoi essayez-vous de faire cela? D'où viennent ces ficelles, et qu'essayez-vous de faire avec elles? –

Répondre

2

Vous pouvez utiliser des guillemets en option de chaque côté de key-value paires comme ceci:

/("?)\b(\w+)\1\s*:\s*("?)((?:\w+[-+*%])*?\w+)\b\3/g 

RegEx Demo

Prenez note du groupe ("?) qui a capturé une chaîne vide ou un guillemet. De l'autre côté, nous utilisons une référence arrière \1 de ce groupe pour la clôture des cours.

+1

J'ai répondu plusieurs fois au problème de guillemets échappés mais cette question ne l'a pas demandé et je ne surpasse pas une solution sauf si c'est une exigence. – anubhava

+0

OP a tenté une regex et l'a marqué avec regex. N'hésitez pas à poster une réponse, si vous le souhaitez. – anubhava

+0

Vous perdez votre temps en argument inutile. Le SO n'empêche personne d'afficher une solution selon la compréhension de l'annonceur. – anubhava