Napisałem wyrażenie regularne z nadzieją, że uda mi się zamienić każde dopasowanie (czyli tylko jeden znak) na wielkie litery. Używam EditPada Pro (jednak jestem skłonny użyć dowolnego innego narzędzia, które by mi na to pozwoliło, o ile jest to darmowe, ponieważ muszę to zrobić tylko raz).
Tło: Mam bardzo długi plik tekstowy używany przez aplikację uwzględniającą wielkość liter, a niektóre słowa zaczynają się od małych liter zamiast wielkich liter, co powoduje awarię aplikacji. Wykonanie tego ręcznie zajęłoby bardzo dużo czasu, a obejście się bez wyrażeń regularnych byłoby dość skomplikowane, ponieważ występowanie (złej) małej litery jest bardzo specyficzne.
Napisałem wyrażenie regularne select i teraz mogę go używać z odwołaniem wstecznym (1 $ działa dobrze), ale nie mogę go zastąpić wielkimi literami. Myślałem, że coś takiego jak \ u $ 1 będzie działać, ale nie działa w EditPad Pro.
Jeśli żadne darmowe narzędzie nie pozwala mi tego zrobić, myślę, że alternatywą byłoby zrobienie tego w C #, jednak trochę mi się spieszy i nie blisko kompilatora, więc najpierw musiałbym pobrać wersję ekspresową, więc ... Lepiej byłoby znaleźć narzędzie, które obsługuje taką funkcję!
Dziękuję Ci!
Odpowiedzi:
TextPad pozwoli ci wykonać tę operację.
przykład:
Znajdź:
\([^ ]*\) \(.*\)
Zamień na:\U\1\E \2
\U
spowoduje, że wszystkie następujące znaki być górny\E
wyłączy\U
wynikiem będzie:
źródło
ToUpper
)?\U$1\E
w Sublime Text\U\1\E
w Vim\L$1\E
zadziałało.Wiem, że ten wątek dotyczy EditPada Pro, ale przyszedłem tutaj, ponieważ miałem takie same potrzeby z wyrażeniem regularnym javascript.
Dla osób, które tutaj potrzebują tej samej wskazówki, możesz użyć funkcji lub lambda jako argumentu zamiany.
Używam poniższej funkcji do konwersji nazw css z
-
na odpowiednik javascript, na przykład"border-top"
zostaną przekształcone w"borderTop"
:źródło
Źródło: Goyvaerts, styczeń (2006). Wyrażenia regularne: kompletny samouczek . Lulu.com. p. 35 . ISBN 1411677609. Książki Google. Źródło 25 czerwca 2010 r.
źródło
Możesz to zrobić w jEdicie, używając opcji „Zwróć wartość fragmentu BeanShell” w oknie dialogowym Znajdź i zamień jEdita. Po prostu wyszukaj
" [a-z]"
i zamień na" _0.toUpperCase()"
(bez cudzysłowów)źródło
Możesz również użyć pierwszej litery dopasowania, używając
\I1
i\I2
etc zamiast$1
i$2
.źródło
Po prostu kolejny przykład ussage dla Notepad ++ (tryb wyszukiwania wyrażenie regularne)
Przykład:
źródło