Próbuję znaleźć wszystkie wartości z następującym wzorem:
value="4"
value="403"
value="200"
value="201"
value="116"
value="15"
i zastąp ją wartością wewnątrz zakresów.
Aby znaleźć wzorzec, używam następującego wyrażenia regularnego:
.*"\d+"
Jak mogę dokonać wymiany?
Odpowiedzi:
W Notepad ++, aby zamienić, naciśnij Ctrl+, Haby otworzyć menu Zamień.
Następnie, jeśli zaznaczysz przycisk „Wyrażenie regularne” i chcesz, aby w zastępstwie wykorzystano część pasującego wzorca, musisz użyć „grup przechwytywania” (więcej informacji w google ). Na przykład, powiedzmy, że chcesz dopasować każdą z poniższych linii
używając
.*"\d+"
wzoru i chcesz zachować tylko numer. Następnie można użyć grupy przechwytywania w pasującym wzorem, używając nawiasów(
i)
, tak:.*"(\d+)"
. Więc teraz w zastępstwie możesz po prostu napisać$1
, gdzie $ 1 odnosi się do wartości pierwszej grupy przechwytywania i zwróci liczbę dla każdego udanego dopasowania. Jeśli miał dwie grupy przechwytywania, na przykład(.*)="(\d+)"
,$1
zwróci ciągvalue
i$2
zwróci numer.Więc używając:
Odnaleźć:
.*"(\d+)"
Zastąpić:
$1
To cię zwróci
Należy pamiętać, że istnieje wiele alternatywnych i lepszych sposobów dopasowania wspomnianego wzoru. Na przykład wzór
value="([0-9]+)"
byłby lepszy, ponieważ jest bardziej szczegółowy i będziesz mieć pewność, że będzie pasował tylko do tych linii. Możliwe jest nawet dokonanie zamiany bez użycia grup przechwytywania, ale jest to nieco bardziej zaawansowany temat, więc na razie go zostawię :)źródło
$1
nie działa dla mnie. Użyłem\1
zamiast tego i to zadziałało.\1
Działa we wszystkich wersjach Notepad ++.$1
działa tylko w nowszych.Hex Editor
wtyczką. W trybie widoku szesnastkowego Notepad ++ nie wyświetlaRegular Expression
opcji Wyszukaj / zamień. W trybie widoku tekstu widzęRegular Expression
opcję Wyszukaj / zamień. Używam Notepad ++ w wersji 6.9.2, która jest obecnie aktualną wersją.psxls dał świetną odpowiedź, ale myślę, że moja wersja Notepad ++ jest nieco inna, więc przechwytywanie $ (znak dolara) nie działa.
Mam Notepad ++ v.5.9.3 i oto jak możesz wykonać swoje zadanie:
Wyszukaj wzorzec: wartość = \ "([0-9] *) \" I zamień na: \ 1 (cokolwiek chcesz zrobić wokół tej grupy przechwytywania)
Dawny. Otocz nawiasami kwadratowymi
[\ 1] -> zwróci wartość = "[4]"
źródło
\1
Pomógł mi zachować numer, ale usunąłem znajdujący się za nim cytat. Miałem około 7400 wierszy w dokumencie takim jaktablename.columnname = '12345'
. Pierwszy cytat był łatwy do usunięcia, drugi został utworzony przy użyciu Twojego\1
w polu tekstowym zamiany. Dzięki, +1Zastąpić
(.*")\d+(")
Z
$1x$2
Gdzie
x
jest twoja „wartość wewnątrz zakresów”.źródło
Mam Notepad ++ v6.8.8
Znajdź : [([a-zA-Z])]
Zastąp : [\ '\ 1 \']
Daje: $ tablica [XYZ] => $ tablica ['XYZ']
źródło
Odnaleźć:
value="([\d]+|[\d])"
Zastąpić:
\1
To naprawdę cię zwróci
4
403
200
201
116
15
js:
źródło