Zobacz pełną wersję : Wyrażenie regularne - znajdź i zamień
Czy można w jakiś sposób skonstruować wyrażenie regularne tak, aby znalazło daną frazę, ale zamieniło część z niej?
Już tłumaczę o co chodzi: Załóżmy, że mamy mnóstwo plików [tekst][spacja][liczby][spacja][tekst]
chciałbym teraz znaleźć [spacja][liczby] i zamienić jedynie [spacja] na coś innego
Kowalski 28.04.2014 Warszawa -> Kowalski ur.28.04.2014 Warszawa
Dla tego konkretnego przypadku powinno zadziałać takie coś:
Wyrażenie regularne: (\w+) ([\d|\.]+) (\w+)
Zamiana na: $1 ur\.$2 $3
http://regex101.com/r/iI1jQ0/1
Symbole $1..n oznaczają numery grup w nawiasach, które są wstawiane w wyniku.
W Notepad++ działa to dokładnie tak samo, tylko musisz na dole w oknie zamiany zmienić tryb szukania na wyrażenia regularne.
W przypadku Twojego problemu rozwiązaniem są te grupy w nawiasach - "capturing groups". Za pomocą $1..n możesz potem wstawić je do wyniku zamiany. Z frazą postaci XY byłoby to coś takiego: (WYRAŻENIE_REGULARNE_ZNAJDUJĄCE_X)(WYRAŻENIE_RE GULARNE_ZNAJDUJĄCE_Y) Zamiana tego na: TEKST_ZASTĘPUJĄCY_X$1 Nie możesz robić żadnych operacji na zawartości takiej grupy X - możesz ją tylko wstawić lub nie do wyniku zamiany. Jeżeli chcesz ją przetworzyć w jakiś inny sposób to musisz ją rozbić na mniejsze fragmenty.
Wyrażenia regularne mają to do siebie, że trudno jest podać jakąś uniwersalną formułę na dany problem - ich pisanie wymaga trochę praktyki i prób. Znane jest stwierdzenie: "Niektórzy ludzie, kiedy napotkają problem, myślą: 'Wiem, użyję wyrażeń regularnych'. I teraz mają dwa problemy.".
Już kumam. Jeszcze raz dziękuję za pomoc
Z frazą postaci XY byłoby to coś takiego: (WYRAŻENIE_REGULARNE_ZNAJDUJĄCE_X)(WYRAŻENIE_RE GULARNE_ZNAJDUJĄCE_Y) Zamiana tego na: TEKST_ZASTĘPUJĄCY_X$1
Dopiero zauważyłem błąd, a nie mogę już edytować. Wyrażenie zamiany powinno mieć postać: TEKST_ZASTĘPUJĄCY_X$2 $1 to pierwsza grupa odpowiadająca X, a $2 to grupa odpowiadająca Y
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.