Localizar e substituir no notepad ++ com regex

1

Eu preciso converter algum código antigo do VB.net para c #, e para acelerar as coisas eu estava planejando usar o regex.

Por exemplo, neste trecho de código:

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;

Eu quero substituir Request.ServerVariables("...") por Request.ServerVariables["..."] Eu tentei usar Request.ServerVariables("(.*)") para combiná-lo, mas não está funcionando. Alguma sugestão?

    
por Cornwell 07.02.2014 / 13:35

1 resposta

2

Os parênteses são um caractere especial no REGEX, pois criam um "grupo correspondente". Então, se você precisar escapar deles com uma barra invertida ( \ ). Você também gostaria de escapar do período / fullstop, pois isso também tem um significado especial na regex:

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

No entanto, esta é uma correspondência bastante liberal - para garantir que você só passe o perem final do Request.ServerVariables("...") que preferiria:

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

Isso forneceria uma correspondência entre as cotações de apenas A-z e _ .

Um ótimo recurso para você aprender mais sobre o Regex é Regexr . Tem um editor de texto ao vivo, onde você pode experimentar diferentes padrões e ver como ele combina com o seu exemplo. Ele também tem uma janela "Samples" que dá dicas sobre o que as peças fazem.

Se você deseja encontrar / substituir com mais facilidade (e isso não é uma regex elegante), é possível fazer mais grupos correspondentes:

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

Veja aqui

    
por 07.02.2014 / 14:26