2016-03-14 13 views
24

Mam plik z tekstem i cyframi o długości 5 (tj. 12000, 11153 itd.). Chcę dołączyć wszystkie te numery z 0. Tak więc 11153 staje się 111530. Czy to możliwe w Notepad ++?Notepad ++ Zastąpienie dopasowania regex dla tego samego tekstu plus dołączanie znaku

Wiem, że mogę znaleźć wszystkie numery z następującym wyrażeń regularnych: [0-9]{5}, ale w jaki sposób mogę je zastąpić tym samym numerem plus dołączającym 0?

W polu zastępczej Próbowałem następujące rzeczy:

  • [0-9]{5}0 - której objęła dosłownie, więc 11153 zastąpiono [0-9]{5}0
  • \10 - Czytałem gdzieś, że \1 zajęłoby mecz, ale wydaje się nie działać. Spowoduje to zastąpienie 11153 z 0
  • EDIT: \00 - Na podstawie tego SO answer widzę muszę korzystać \0 zamiast \1. Nadal jednak nie działa. Spowoduje to zastąpienie 11153 z

Tak, mam wrażenie, jestem blisko z \1 lub \0, ale nie wystarczająco blisko.

+0

'^ [0-9] {5} $' (lub '\ b [0-9] {5} \ b') ->' $ {0} 0' –

Odpowiedz

42

Jesteś bardzo blisko odpowiedzi! To, co przegapiłeś, to grupa przechwytująca.

Użyj tego regex w "Znajdź" Section:

([0-9]{5})

W "zastąp", użyj tego:

\10

( i ) oznaczają grupę przechwytywania. Zasadniczo oznacza to, że przechwytujesz swój numer, a następnie zastępujesz go tym samym, po którym następuje zero.

+1

Nie musisz przechwytywać w ogóle, wszystkie potrzeby OP to '\ d {5}' (lub '\ b \ d {5} \ b' lub'^\ d {5} $ ') -> '$ {0} 0', po prostu użyj 0. grupy zdefiniowanej z odnośnikiem zwrotnym podobnym do Perla. Użycie odwołania wstecznego w stylu POSIX wymaga użycia grupy przechwytującej, prawdziwej (ponieważ POSIX odwołania wstecz zaczynają się od '1' do' 9', więc '\ 10' nigdy nie jest mylone z odsyłaczem wstecznym do 10 grupy). –

2

Można użyć \K to reset.

\b\d{5}\b\K 

i zastąpić 0

See demo at regex101

+0

Może to błąd w Notepad ++, ale kiedy używam twojego wyrażenia regularnego i używam Znajdź następny, to znajduję wszystkie liczby, ale kiedy klikam zamianę '0', to nie dołączam 0 .. –

+0

@KevinCruijssen: Właśnie sprawdzono, zera są dodawane (w. 6.9). –

+0

@KevinCruijssen Przetestowałem to z moim np. V6.8.8, gdzie zadziałało:) –

3

Jesteś bardzo blisko. Musisz dodać grupę przechwytującą do wyrażenia, otaczając je nawiasami. ([0-9]{5})

Następnie użyj \10 jako zamiennika. To zastępuje dopasowanie tekstem z grupy 1, po którym następuje zero.

+0

Nie ma problemu. Po prostu nie jestem wystarczająco szybki :). Cieszę się, że masz rozwiązanie – roblovelock

Powiązane problemy