2010-09-04 11 views
0

J'utilise C# RegEx pour rechercher des chaînes entre guillemets dans un texte de script. J'utilise cette expression: new Regex("\"((?:\\\\.|[^\\\\\"]*)*)\""), "((?:\\.|[^\\\"]*)*)" sens par exemple de ne pas prendre soin de \" casRegEx: chaînes (doubles) entre guillemets

Cela rend RegEx.Matches fonctionne et arrête jamais pour certaines chaînes d'entrée.

Ne vous occupez pas de ce problème avec .Net RegEx, je sais que mon expression n'est pas la meilleure.

Avant, j'ai utilisé l'expression (?<!\\)".*?(?<!\\)" mais ce n'est pas suffisant pour la chaîne d'entrée "\\".

L'objectif est de détecter les chaînes de caractères avant d'analyser les codes de script.

Quelqu'un suggère une bonne expression?

Il doit travailler pour:

echo("Hello" + yourName + ", here is \"MyTest\""); 
path = "\\" + file; 
echo("path ends with \\"); 

(attention, \ sont édités étrangement avec ce site)

Merci beaucoup.

+0

Pouvez-vous mettre la regex dans sa propre ligne et la précéder de quatre espaces? Elseway, Personne ne peut comprendre ce que vous essayez de nous dire. – fuz

Répondre

1

Habituellement, il est adapté à l'aide

"((?:[^\\"]|\\.)*)" 

Voir http://www.ideone.com/JiJwa.

+0

testé avec http://regexlib.com/RETester.aspx, votre expression ne fonctionne pas avec le code donné dans ma question. – edid

+0

@edid: Alors vous l'avez testé à tort. – kennytm

+0

(attention, \ sont étrangement édités avec ce site) – edid

Questions connexes