2009-10-14 5 views
3

J'essaie de supprimer les commentaires javascript via regex en C# et je suis bloqué. Je veux supprimer toutes les occurrences de commentaires de style double barre oblique //.Regex pour supprimer les commentaires de style javascript double barre oblique (//)

Mon regex actuelle est (?<!:)//[^\r\n]* qui va attraper tous les commentaires et de prévenir l'appariement des http://. Cependant, le lookbehind négatif était paresseux et bien sûr me réprima dans le cas de test suivant:

var XSLPath = "//" + Node; 

Je suis à la recherche d'une expression régulière qui effectuera un regard en arrière pour voir si un nombre pair de guillemets doubles (") se produit avant la correspondance. Je ne suis pas sûr que ce soit possible. Ou peut-être y a-t-il une meilleure façon de faire cela?

+0

Toujours utiliser [Regex Coach] (http://weitz.de/regex-coach/) – bobobobo

Répondre

2

(mise à jour en fonction des commentaires)

Il ressemble à cela fonctionne assez bien:

(?<=".*".*)//.*$|(?<!".*)//.*$ 

Il semble que le test cases in Regex Hero montrent qu'il égalerons commentaires la façon dont je pense qu'il devrait (presque).

Par exemple, il va ignorer complètement cette ligne:

var XSLPath = "//" + Node; 

Mais il est assez intelligent pour correspondre au commentaire à la fin de cette ligne:

var XSLPath = "//"; // stuff to remove 

Cependant, il est pas assez intelligent savoir comment gérer 3 ou plusieurs guillemets avant le commentaire. Je ne suis pas entièrement sûr de savoir comment résoudre ce problème sans le coder en dur. Vous avez besoin d'un moyen d'autoriser un nombre pair de citations.

+0

échoue sur 'var s =' 'http: //''www''.website.com;' –

+1

Cependant, cela est facilement changé via '(?

+1

Echoue quelque chose comme ceci: "text // more text" – Joel

Questions connexes