Mam duży plik HTML z dużą ilością znaczników, który wygląda następująco:
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<span style="font-size: small; font-family: Times New Roman;">stuff here</span>
</p>
Próbuję zrobić Vima wyszukiwania i zamiany, aby pozbyć się wszystkich class=""
, a style=""
jednak mam problemy podejmowania mecz ungreedy.
Moja pierwsza próba była taka
%s/style=".*?"//g
ale Vim nie lubi ?
. Niestety usunięcie ?
powoduje, że mecz jest zbyt chciwy.
Jak mogę sprawić, by mój mecz był nieszczery?
regex
vim
regex-greedy
Mark Biek
źródło
źródło
Odpowiedzi:
Zamiast
.*
używać.\{-}
.%s/style=".\{-}"//g
Zobacz także
:help non-greedy
źródło
\v
(bardzo magiczna flaga), będziesz chciał użyć.{-}
.{1,3}
robi (nawiasy klamrowe). Znak minus-
oznacza: powtórz tak mało, jak to możliwe (mało == minus);)Nie chciwe wyszukiwanie w vimie odbywa się za pomocą operatora {-}. Lubię to:
Spróbuj:
źródło
co jest źle z
źródło
Jeśli masz wygodniejszą składnię wyrażeń regularnych PCRE, która
masz [g] vima skompilowanego z funkcją perla, przetestuj za pomocą
: sprawdź i sprawdź funkcje; jeśli + perl jest tam, to możesz iść)
spróbuj wyszukać / zamień za pomocą
Przykład. Zamień atrybuty src i alt w znaczniku img:
źródło
perldo
działa świetnie, ale niestety nie podświetla wybranego testu podczas pisania wyrażenia regularnego.Przekonałem się, że dobrym rozwiązaniem tego typu pytań jest:
(lub perl, jeśli wolisz). IOW, zamiast poznawać osobliwości wyrażeń regularnych vima, użyj narzędzia, które już znasz. Używanie perla sprawi, że? modyfikator działa, aby nie dopracować dopasowania.
źródło
/pattern
sprawdzanie poprawności dopasowania wzorca przed zastosowaniem go i używaniec
modyfikatora w vimie również jest fajne :)Z
\v
(jak zasugerowano w kilku komentarzach)źródło
Wtyczka eregex.vim obsługuje nie chciwych operatorów w stylu Perla
*?
i+?
źródło
Dzień dobry
Przetwarzanie wyrażeń regularnych Vima nie jest zbyt genialne. Przekonałem się, że składnia wyrażeń regularnych dla sed jest odpowiednia dla możliwości vima.
Zazwyczaj włączam podświetlanie wyszukiwania (: set hlsearch), a następnie gram regexp po wprowadzeniu ukośnika, aby przejść do trybu wyszukiwania.
Edycja: Mark, ta sztuczka mająca na celu zminimalizowanie zachłannego dopasowania jest również opisana w doskonałej książce Dale Dougherty „Sed & Awk” ( oczyszczony link do Amazon ).
Rozdział trzeci „Zrozumienie składni wyrażeń regularnych” to doskonałe wprowadzenie do bardziej prymitywnych funkcji wyrażeń regularnych związanych z sed i awk. Tylko krótki odczyt i gorąco polecam.
HTH
Twoje zdrowie,
źródło
\v
go użyjesz , pomoże to wyczyścić składnię.