Jak mogę użyć wyrażenia regularnego, aby zamienić duże litery na małe w Intellij IDEA?

92

Poszukałem go w Google i dowiedziałem się, jak zrobić z innymi parserami wyrażeń regularnych:

http://vim.wikia.com/wiki/Changing_case_with_regular_expressions
http://www.regular-expressions.info/replacecase.html

Próbowałem tych i żadna z nich nie działa. Na przykład chcę użyć wyrażenia regularnego, aby to zmienić:

private String Name;
private Integer Bar = 2;

Do tego:

private String name;
private Integer bar = 2;

Próbowałem czegoś takiego:

replace: private (\S+) (\S+)
with: private $1 $L$2
with: private $1 \L$2
with: <etc.>

Żaden z nich nie działa. Czy można to zrobić w intellij, czy jest to brakująca funkcja? To jest tylko dla celów edukacyjnych, a przykład jest wymyślony. Chcę tylko wiedzieć, czy można to zrobić w intellij.

Daniel Kaplan
źródło
3
Czy jest jakiś powód, dla którego chcesz użyć wyrażenia regularnego? IntelliJ ma do tego skrót klawiszowy .
ajp15243
@ ajp15243 To jest tylko do celów edukacyjnych i przykład jest wymyślony. Dosłownie chcę wiedzieć, czy jest to możliwe w intellij.
Daniel Kaplan,
3
Słusznie! Chciałem się tylko upewnić. Znalazłem odniesienie do składni IntelliJ Regex , aw komentarzach ktoś chce zadać to samo pytanie co ty. Moderator odpowiedział (i myślę, że trochę źle zrozumiał), ale odpowiedź wskazuje, że nie jest to możliwe w przypadku składni wyrażeń regularnych IntelliJ.
ajp15243
Zawsze możesz napisać do tego wtyczkę.
Meo
1
@tieTYT gaoagong's jest całkiem niezły, dam mu to :).
ajp15243

Odpowiedzi:

174

W IDEA 15 możesz użyć poniższych przełączników do przełączania wielkości liter w przechwyconych wyrażeniach. Jest to teraz oficjalnie udokumentowane od czasu wydania tej wersji.

  • \l: małe litery w następnym znaku
  • \u: w górę przypadku kolejnego znaku
  • \L: małe litery w następnych znakach, aż \Edo końca lub końca zastępującego ciągu
  • \U: w górę wielkości liter następnych znaków aż do a \Elub końca ciągu zastępującego
  • \E: zaznacz koniec zmiany sprawy zainicjowanej przez \Ulub\L

Oto przykład użycia (ponieważ dokumentacja nie jest jasna):

znajdź: (\ w + _) + (\ w +) zamień: \ L $ 1 $ 2 \ E

Powyższe spowoduje konwersję FOO_BAR_BAZna foo_bar_bazitd. 1 $ odnosi się do pierwszej znalezionej grupy przechwytywania (w nawiasach), 2 $ do drugiego zestawu itd.

Dla dobra potomnych: zostało to początkowo zgłoszone przez @gaoagong i tam udokumentowane .

desseim
źródło
13

Szukałem odpowiedzi, a następnie zdałem sobie sprawę, że @ ajp15243 już odpowiedział na to powyżej. Obecnie w Intellij nie ma możliwości użycia funkcji zastępowania wyrażeń regularnych do zmiany wielkości liter. Pod następującym adresem URL znajduje się krótka dyskusja na temat tej funkcji.

http://www.jetbrains.com/idea/webhelp/regular-expression-syntax-reference.html

Możesz także głosować na funkcję w numerze Youtrack tutaj:

http://youtrack.jetbrains.com/issue/IDEA-70451

Istnieje wtyczka regex Intellij, ale niestety nie obsługuje ona również znaków pisowni dolnej i górnej.

http://plugins.jetbrains.com/plugin/19?pr=idea

Być może będziesz musiał po prostu uruchomić pliki przez program w Perlu, aby je poprawnie zastąpić.

gaoagong
źródło
1
Zgodnie z youtrackiem, jest to dodawane w wersji 15 IntelliJ
Kevin Sheehan
6

Zacząłem używać wtyczki Idea Vim i nauczyłem się robić takie rzeczy w Vimie. W ten sposób mogłem ponownie wykorzystać te umiejętności poza Idea.

Oto polecenie vim, aby zrobić to, o co prosiłeś.

:%s/private\s\(\w*\)\s\(w*\)/private \1 \L\2/g

Regex jest wprowadzany w IDE. Dodatkowe ukośniki są wymagane, aby uciec ze wzoru wyrażenia regularnego do Vima.

W ramach IDE

Znajdź wtyczkę z poziomu IDE. wprowadź opis obrazu tutaj

chinto
źródło
2
Ogromne obejście, które prawdopodobnie nie pomoże 99% ludzi tutaj, ponieważ nie będą chcieli używać emulacji VIM. Ale zdarza mi się już zainstalowany ten plugin tak to działa na mnie :)
Daniel Kaplan
1
Wiem… Vi i Vim wydają się na początku bezużyteczni dla każdego, kto używa IDE. W końcu zacząłem uczyć się Vi po spotkaniu ich wszystkich na serwerach. Podoba mi się teraz, kiedy nie muszę zmieniać sposobu myślenia podczas poruszania się między narzędziami.
chinto
Dopiero zaczynam, nie jestem jeszcze biegły. Czy uważasz, że jesteś bardziej produktywny w edycji w Intellij-IDEA z IDEAVim niż przed użyciem Vi?
Daniel Kaplan,
1
Coraz bardziej… Byłem dobry w zaćmieniach. Następnie przeniósł się do Intellij i nauczył się większości jego sztuczek. Wtedy zdałem sobie sprawę, że nauczenie się Vima uczyni mnie od razu dobrym w serwerach i stacjach roboczych. Widzę również, że Vim jest znacznie potężniejszy w manipulowaniu tekstem i nawigacji. Nadal używam skrótów IDE dla wszystkich specjalizacji IDE, takich jak refaktoryzacja i znajdowanie referencji, i przechodzę do definicji itp. Jest to jednak bardzo ważne, aby przełączać się między trybami.
chinto
1
To doskonałe rozwiązanie dla osób, które potrafią korzystać z vi. Włączam IdeaVim, gdy muszę wykonać złożone podstawienia, a następnie wycofuję się ponownie, aby cieszyć się własnymi funkcjami edytora Idea. Chciałbym jednak, aby IdeaVim miała wskaźnik pokazujący, kiedy jest aktywny.
Pan Lance E Sloan