Chcę użyć funkcji Znajdź i zamień IntelliJ, aby wykonać następującą transformację:
// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar
Wypróbowałem następujące:
Tekst do znalezienia: model.put\((.*),(.*)\)
zamień na:model\[\\1\] = \\2
Ale Intellij nie wydaje się rozpoznawać \\1
i \\2
jako odwołania wsteczne. Próbowałem też pojedynczego ukośnika, ale to też nie działa.
java
regex
intellij-idea
Dónal
źródło
źródło
(foo)
Zastąp wyszukiwanie :$1bar
'+ var +'
do${var}
niektórych ciągów szablonów i nie mógł zrozumieć, dlaczego IntelliJ nie zakończyć wymianę. okazuje się,$
że trzeba uciec w wymianie.Krótko mówiąc, trzeba użyć
$1
, aby$n
za zamiennych wstecznych.\1
składnia służy tylko do odwołań wstecznych w ramach wyszukiwania.W IntelliJ 2016 dokumentacja w aplikacji jest myląca. Oto lepszy cytat z pełnej dokumentacji:
Źródło: składnia wyrażeń regularnych 2016.1, porady i wskazówki
źródło
Pomoc kontekstowa w produkcie dla wyrażenia regularnego w Idea 9.0 (i być może w innych wersjach) wydaje się być niepoprawna. Stwierdza to:
Ale najwyraźniej, jak wspomniałem w poprzednich odpowiedziach i z mojego doświadczenia, tak naprawdę jest to \ $ n dla odniesień wstecznych, a nie \ n
Dostęp do pomocy kontekstowej można uzyskać, klikając łącze „[Pomoc]” obok opcji radiowej „Wyrażenie regularne” w oknie dialogowym „Zastąp tekst”
źródło
IntelliJ IDEA / Odniesienie / Odniesienie do składni wyrażeń regularnych
Dopasowuje podwyrażenie i zapamiętuje dopasowanie. Jeśli potrzebujesz użyć dopasowanego podciągu w tym samym wyrażeniu regularnym, możesz go pobrać, używając odwołania wstecznego (\ num, gdzie num = 1..n). Jeśli chcesz odwołać się do dopasowanego podciągu gdzieś poza bieżącym wyrażeniem regularnym (na przykład w innym wyrażeniu regularnym w polu Zamiennik), możesz go pobrać, używając znaku dolara ($ num, gdzie num = 1..n). Jeśli musisz dołączyć znaki nawiasów do wyrażenia podrzędnego, użyj „(” lub „)”.
źródło