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?

Cornwell
la source

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

nerdwaller
la source
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