2009-08-06 11 views
14

Ho bisogno di cercare tutti i miei codebase per "Url" e sostituirlo con "URL". Se cerco Url in Visual Studio ho anche tutte le mie variabili con "Url" in esso.Regex per cercare una parola in una stringa in Visual Studio

Chiunque ha un Regex che posso usare per trovare solo Url all'interno di una stringa quotata, ad es. "Usa questo Url:"?

Modifica

Cercavo cercando un modo rapido e sporco per trovare il testo progettista e stringhe hard coded che ha avuto URL nella stringa e modificarli a URL.

+0

Non c'è un'opzione "Trova parola intera" in VS? –

+0

So che questo non è utile per il tuo situazione necessaria y, ma questo è uno dei tanti motivi per cui le risorse stringa non sono solo per la localizzazione. – Lee

+0

Match Case e Trova intero Word troverà anche: valori di enum (Url,) Propreties (private string Url;) Usi di proprietà (myClass.Url) – Jeff

risposta

15

Quello che ho veramente finito per dover era:

("[^"]*Url[^"]*") 

E grazie alla punta dal tghw che ha sottolineato il: collegamento q in Visual Studio equivale a :

(("[^"]*")|('[^']*')) 

ho capito che avevo bisogno di usare la prima parte per trovare solo le corde doppie quoated che cercavo.

Entrambe queste espressioni regolari e una ricerca standard con "Maiuscole/minuscole" e "Corrispondenza intera parola" hanno prodotto risultati con alcune stringhe che speravo di non trovare ma che hanno eliminato il codice con "Url".

+2

Questo mi ha ingannato, quindi inserirò quella che penso sia la versione giusta: '" [^ "\ n] * Url [^" \ n] * "' - altrimenti restituirà risultati dove la parola ' Url 'appare su qualsiasi riga che si trova tra due stringhe, e poiché il risultato find mostra solo la prima riga, sembra che si ottenga un falso positivo. –

0

"Usa questo (Url):", quindi è possibile sostituire $ 1 (o qualsiasi altra sintassi utilizzata da Visual Studio). Potrebbe essere necessario sfuggire alle virgolette e non sono sicuro che Visual Studio ti consenta di confrontare parti della regex.

8

Visual Studio ha un operatore "stringa quotata" :q. Se si cerca :qUrl con "Usa: espressioni regolari" e "Maiuscole/minuscole" attivate, dovrebbe trovare tutte le istanze di "Url" solo nelle stringhe.

Aggiornamento: Quanto sopra non è corretto. : q cerca solo una stringa tra virgolette, ma non puoi inserire nulla in essa. Il mio test stava solo mostrando casi che sembravano corretti, ma erano solo casualmente coincidenti. Penso, invece, si desidera qualcosa di simile:

^(:q*.*)*(("[^"]*Url[^"]*")|('[^']*Url[^']*'))(:q*.*)*$ 
+0

Ooohhh +1 per: q. Non lo sapevo. –

+2

A meno che non stia facendo qualcosa di sbagliato, non trova nemmeno il mio esempio "Usa questo Url:", e ci vuole un bel po 'di tempo per funzionare anche su un singolo documento di 200 righe sul mio quad core. – Jeff

6

Se si desidera cercare rapidamente una stringa quotata, è possibile utilizzare l'opzione di ricerca "Usa caratteri jolly" in Visual Studio.

Ad esempio:

"*Url*" 
1

ho usato il seguente per la ricerca solo "parole intere" (intendo: appare con uno spazio prima di un dopo o immedately dopo o prima del "):

(("[^"]*[ ]|")Url([ ][^"]*"|")) 

Ad esempio, corrisponde "test Url" e "Url test" ma non "testUrl".

Problemi correlati