2013-06-30 15 views
44

Szybkie pytanie: Mam wyrażenie regularne, ^(?:\b[A-Z]+\b\s+)+(.*)\d{8}, które zawiera dwie grupy przechwytywania. Chciałbym zastąpić grupę przechwytywania 1 białą spacją. Czy to jest możliwe?Zastąp grupę przechwytującą regexp w Notepad ++?

Jeśli zastąpię: \1 zastępuje on TEST TESTER Hello, world. Another word here. 75793250 -> z Hello, world. Another word here. Chcę ten wynik: TEST TESTER 75793250. Zastępowanie \1 białymi znakami.

+3

Hmm, jest tylko jedna grupa przechwytująca, o ile widzę ...? '(?: ...)' jest grupą niezapisującą. – Jerry

+0

Myślałem, że ma dwa, 0 i 1? Grupa 0 to pełna zgodność? W każdym razie chciałbym zastąpić grupę, którą Notepad ++ nazywa 1 białą spacją. – Kaah

+0

Jeśli zastąpię: '\ 1' zastępuje' TEST TESTER Hello, world. Kolejne słowo tutaj. 75793250' -> z 'Hello, world. Kolejne słowo tutaj ". Chcę tego wyniku: 'TEST TESTER 75793250'. Zastąpienie '\ 1' białą spacją. – Kaah

Odpowiedz

74

Spróbuj użyć:

^((?:\b[A-Z]+\b\s+)+)(?:.*)(\d{8}) 

i zastąpić:

\1\2 
+0

Dzięki, że zadziałało idealnie! :) – Kaah

+1

@Kaah Nie ma za co! :) Ponadto przypomniał mi aktualizację mojej wersji notatnika! Miałem 6.1.8 na xD – Jerry

7

Dlaczego miałbyś to robić?

zrobić w ten sposób

Regex: ^(\b[A-Z]+\b\s+)+(?:.*)(\d{8})

Replace with: \1 \2

+0

Dzięki, ale to daje "nieprawidłowe wyrażenie regularne" w Notepad ++ 6.3.3. Proszę zrewidować Anirudh. – Kaah

+1

@Kaah oops..orrected .. – Anirudha

+0

To wyrażenie zwróci 'TESTER 75793250', ponieważ przechwytywanie powtarzającej się grupy da ci ostatni łańcuch, który pasuje. Inny przykład: zamiana ciągu 'abcd' na wyrażenie regularne' (.) + 'I łańcuch zastępczy' \ 1 'spowoduje napis "d' – steve9164