2009-08-06 15 views
14

Muszę przeszukać cały mój kod dla "Url" i zastąpić go "URL". Jeśli szukam Url w Visual Studio, otrzymuję również wszystkie moje zmienne z "Url".Regex, aby wyszukać słowo w ciągu w Visual Studio

Każdy ma Regeksa Można użyć, aby znaleźć adres URL w cudzysłowie np. "Użyj tego adresu URL:"?

Edit

Szukałem szukasz szybkiego i brudnej drodze do znalezienia tekstu projektant i zakodowanego ciągi, który miał URL w ciąg i zmienić ich zawartość.

+0

Czy w VS nie ma opcji "Znajdź całe słowo"? –

+0

Wiem, że to nie jest pomocne sytuacja niezbędna y, ale jest to jeden z wielu powodów, dla których zasoby ciągów nie służą tylko do lokalizacji. – Lee

+0

wielkość liter i Znajdź całe wyrazy znajdą również: wartości enum (URL,) Propreties (private String url;) zastosowań posesji (myClass.Url) – Jeff

Odpowiedz

15

Co naprawdę skończyło się potrzebujących było:

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

A dzięki końcówce z tghw który podkreślił: q skrótu w Visual Studio równa się :

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

Uświadomiłem sobie, że muszę użyć pierwszej porcji, aby znaleźć tylko podwójnie quoowane struny, których szukałem.

Zarówno to wyrażenie regularne, jak i standardowe znalezisko z "Uwzględnij wielkość liter" i "Dopasuj całe słowo" dało wyniki z pewnymi ciągami, których miałem nadzieję nie znaleźć, ale wyeliminowałem kod z "Url" w nim.

+2

To mnie wprowadziło w błąd, więc zamierzam wprowadzić w to, co uważam za poprawną wersję: '" [^ "\ n] * Url [^" \ n] * "" - w przeciwnym razie zwróci wyniki, jeśli słowo " Url "pojawia się w dowolnej linii pomiędzy dwoma ciągami, a ponieważ wynik wyszukiwania pokazuje tylko pierwszą linię, wygląda na to, że otrzymałeś fałszywy alarm. –

0

"Użyj tego (Url):", możesz zastąpić $ 1 (lub inną składnię, której używa Visual Studio). Być może trzeba będzie uciec od cytatów i nie jestem pewien, czy Visual Studio pozwala na nawiasowanie części regex.

8

Visual Studio ma operatora "quoted string" :q. Jeśli wyszukasz :qUrl przy włączonych "Użyj: Wyrażenia regularne" i "Uwzględnij wielkość liter", wszystkie wystąpienia "Url" powinny znajdować się tylko w ciągach.

Aktualizacja: Powyższe jest nieprawidłowe. : q po prostu szuka cytowanego ciągu znaków, ale nie można w nim nic dodać. Moje testy pokazywały tylko przypadki, które wyglądały poprawnie, ale były po prostu przypadkowe. Myślę, że zamiast tego chcesz coś takiego:

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

Ooohhh +1 dla: q. Nie wiedziałem o tym. –

+2

Chyba że robię coś nie tak, to nawet nie znajduje mojego przykładu "Użyj tego adresu URL:", i zajmuje sporo czasu, aby uruchomić nawet na pojedynczym 200-wierszowym dokumencie na moim czterordzeniowym rdzeniu. – Jeff

6

Jeśli chcesz szybko wyszukać cytowany ciąg znaków, możesz użyć opcji "Użyj symboli wieloznacznych" w programie Visual Studio.

Na przykład:

"*Url*" 
1

użyłem następujących czynności, aby wyszukać tylko „całe słowa” (mam na myśli: pojawiające się z przestrzenią, zanim po lub immedately po lub przed "):

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

Na przykład pasuje do "adresu testowego" i "testu adresu URL", ale nie "testUrl"

Powiązane problemy