Dodaj znak do każdej liczby za pomocą Regex w Notepad ++

10

Mam bardzo podstawowe pytanie, którego po prostu nie mogę zrozumieć. Mam taki dokument tekstowy:

This is 5 a test!
This 3 is a test!
This is a 9 test!

i chcę, żeby wyglądało to tak:

This is 5c a test!
This 3c is a test!
This is a 9c test!

Oznacza, że ​​chcę dodać „c” do każdej znalezionej liczby. Próbowałem tego:

Find what: [0-9]+]
Replace with: $1c
Search Mode: Regular expression

ale oczywiście robię coś złego, ponieważ to nie działa. Pomoc będzie mile widziana. Dziękuję Ci!

użytkownik3877230
źródło
3
Właśnie z ciekawości: dlaczego próbowałeś [0-9]+]z tymi dziwnymi niedopasowanymi nawiasami?
Heinzi
2
@Heinzi Zakłady że to literówka w pytaniu, ze względu na bliskość +, ]a Enterna wielu klawiaturach.
Wyścigi lekkości na orbicie

Odpowiedzi:

26

Prawie masz rację.

Chcesz wyszukać ([0-9]+)
I zastąpić to$1c

Używasz ( )do utworzenia grupy przechwytywania, więc 1 USD działa.

Możesz też $0czamiast tego zastąpić , wtedy nie musisz używać grupy przechwytywania.

LPChip
źródło
2
Działa idealnie dobrze. Dziękuję bardzo;)
user3877230
Po prostu ciekawy, czy jest jakaś różnica w tym wzorze i szukasz \d+?
BruceWayne,
2
@BruceWayne W zależności od smaku wyrażenia regularnego yoru, \dmoże dopasowywać cyfry Unicode z innych skryptów . Pamiętaj, że nie jest tak w przypadku PCRE, co najwyraźniej wykorzystuje Notepad ++. W każdym razie zazwyczaj wolałbym, \djeśli chcę cyfry, ale [0-9]jeśli wyraźnie chcę te znaki (np. Podczas zgarniania zdefiniowanego formatu, który jest ograniczony do znaków ASCII).
Bob
Rzeczywiście, działałby równie dobrze. Zachowałem składnię [0–9], ponieważ OP już tego próbował, a druga odpowiedź używa \ d.
LPChip
13
  • Ctrl+H
  • Znajdź co: \d+
  • Zamienić: $0c
  • zaznacz opcję Zawiń się
  • zaznacz Wyrażenie regularne
  • Replace all

Wynik dla podanego przykładu:

This is 5c a test!
This 3c is a test!
This is a 9c test!
Toto
źródło
Co robi zawijanie?
Ooker