Rechercher et remplacer dans notepad ++ avec regex


1

Je dois convertir un ancien code VB.net en c # et, pour accélérer les choses, je comptais utiliser regex.

Par exemple, dans ce morceau de code:

if (Request.ServerVariables("SERVER_NAME").StartsWith("user"))
        userS = true;

if (Request.ServerVariables("HTTP_X_ORIGINAL_URL") != null && Request.ServerVariables("HTTP_X_ORIGINAL_URL").StartsWith("/contai"))
        UseContai = true;

Je veux remplacer Request.ServerVariables("...")par Request.ServerVariables["..."] j'ai essayé d'utiliser Request.ServerVariables("(.*)")pour correspondre, mais cela ne fonctionne pas. Aucune suggestion?

Réponses:


2

Les parenthèses sont un caractère spécial dans REGEX, car elles créent un "groupe correspondant". Donc, si vous aviez besoin de leur échapper avec une barre oblique inverse ( \). Vous voudriez aussi échapper à la période / à l’arrêt complet car cela a aussi une signification particulière dans regex:

Request\.ServerVariables\("(.*)"\)

Cependant, il s’agit d’un match assez libéral - pour vous assurer de ne passer que par la fin du jeu, Request.ServerVariables("...")préférez plutôt:

Request\.ServerVariables\("([A-z_]+)"\)

Cela vous donnerait une correspondance entre les citations de seulement A-zet un _.

Regexr est une excellente ressource pour en savoir plus sur Regex . Il a un éditeur de texte en direct où vous pouvez essayer différents modèles et voir comment il s’agence dans votre exemple. Il a également une fenêtre "Samples" qui vous donne des conseils sur ce que font les pièces.

Si vous souhaitez rechercher / remplacer plus facilement (et que ce n’est pas une regex élégante), vous pouvez créer plus de groupes correspondants:

Find: (Request\.ServerVariables)\(("[A-z_]*")\)
Replace: $1[$2]

Le voir ici


Merci, mais il semble que cela correspond à la ligne complète. Y a-t-il un moyen de faire la "fin correspondante" après le dernier) regexr.com/?387tf
Cornwell

1
J'étais en train de mettre à jour pour montrer pourquoi c'était :) Essayez-le.
nerdwaller

Bien sûr, je viens d’ajouter une solution susceptible de vous faire gagner un temps précieux avec le remplacement. J'espère que cela vous aidera!
nerdwaller
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.