2012-10-31 15 views
15

Mam plik z oddzielonymi przecinkami nazwami i oddzielonymi przecinkami numerami kont. Imiona będą zawsze brzmiały jak "Dow, John" i liczby takie jak ",19862". Korzystając z funkcji Regex Find Notepad ++, chciałbym zmienić wszystkie ', między liczbami na' |.Używanie Notepad ++ Regex do znajdowania i zamiany tylko części znalezionych tekstów

Zasadniczo kolei:

12345,09876 
13568,08642 

do

12345|09876 
13568|08642 

Używam [0-9], do znaleźć przecinki, ale nie mogę zmusić go do prawidłowo opuścić ostatnia cyfra numer i zamień tylko przecinek.

Wszelkie pomysły?

Odpowiedz

18

Wyszukaj numer ([0-9]), i zastąp go numerem \1|. Czy to działa?

+0

Ach, wydaje się, że to robię, dzięki! Próbowałem '[0-9]' i zastępowałem go '\ 1 | ', który NIE działał, ale dodanie nawiasów, jak tutaj, działa idealnie. Dzięki jeszcze raz! – JToland

+0

Dlaczego potrzebujemy parens? – Patrick

+1

@Patrick W wyrażeniu regularnym nawiasy tworzą grupę przechwytywania, która informuje analizator składowy o przechwytywaniu części w grupie, aby można było użyć go do zastąpienia. –

6

zastosowanie tego regex

(\d),(\d) 

i zastąpić go

$1|$2 

LUB

\1|\2 
+0

Nie użyłbyś '\ d +'? – Blender

+0

@Blender, który uczyniłby to samo, co – Anirudha

+0

To faktycznie zastąpiło tekst "$ 1 | $ 2" w tekście - tak, jakby nie analizował $ 1 jako czegoś innego niż zamierzony ciąg, który chciałem. – JToland

2

(?<=\d), powinno działać. Co dziwne, działa to tylko wtedy, gdy używam zamieniać wszystko, ale nie, jeśli używam zastępowania pojedynczego. Alternatywnie można użyć opcji (\d), i zastąpić ją:

+0

Nie wierzę, że Notepad ++ obsługuje asercje 'Lookahead' i' Lookbehind'. – Nick

+0

@Nick faktycznie, to robi. Mam NP ++ i to działa (znajduje dopasowania), ale zastępuje je tylko wtedy, gdy używam zamień wszystko. Jeśli spróbuję zastąpić je po kolei, pozostawi je bez zmian. –

+0

Wierzę, że tylko to słyszałem. Wcześniej nie używałem NP ++ do regex. – Nick

Powiązane problemy