Korzystanie z wyszukiwania / zastępowania symboli zastępczych w Notepad ++

17

Oto mój problem: w pliku .txt muszę znaleźć i zastąpić tysiące takich składni:

(patrz (a053007djfgspwdf))

lub

(patrz (a053007djfgspwdf) i (a54134xsedgeg))

lub

(patrz (a053007djfgspwdf), (a9554xsdfgsdfg) i (a54134xsedgeg))

Istnieje duża różnorodność między początkowymi (patrz (a i na końcu )) ciągami tekstowymi. Czy można to ustawić w Notepad ++ za pomocą wyrażenia regularnego? Jeśli tak, jak mam to zrobić? Dzięki!

Michael Tuck
źródło

Odpowiedzi:

17

Przepraszam, po prostu inne odpowiedzi są skomplikowane. (Brak szacunku dla oryginalnych plakatów).

Ponieważ zawsze pojawia się to jako pierwszy wynik wyszukiwania, dodam to w:

  1. Otwórz okno wyszukiwania / zamiany ( CTRL+, Fa następnie zakładkę zamiany)
  2. Zaznacz „Wyrażenie regularne” na dole
  3. Użyj. * Jako symbolu wieloznacznego

Na przykład chciałem usunąć wszystkie wystąpienia abp = "1314", abp = "1313", abp = "1312" itp. (W zasadzie wszystkie liczby są różne, dlatego chcesz, aby się ich pozbyła).

W oknie dialogowym zastępowania:

Znajdź w: abp=".*"
Zamień na:

(Zastępujesz cokolwiek w tych cytatach niczym, aby się tego pozbyć)

Źródło: https://www.organicweb.com.au/17226/general-technology/notepad-wildcard/

SweetSuzie
źródło
15

Tak, może! Notepad ++ ma tryb wyszukiwania RegEx, który można wybrać dla wszystkich potrzeb wymiany RegEx.

Poniższy przykład to podstawowa zamiana czegokolwiek pomiędzy, (see (a...))z wyjątkiem podziału linii. Być może trzeba zmodyfikować RegEx lub napisać własny, aby dopasować go do swoich potrzeb. Oto świetne miejsce, które pomoże Ci w eksperymentowaniu.

RegEx: \(see \(a.+\)\)

Dopasowane ciągi:

(see (a053007djfgspwdf))
(see (a053007djfgspwdf) and (a54134xsedgeg))
(see (a053007djfgspwdf), (a9554xsdfgsdfg) and (a54134xsedgeg))


Zastąp (patrz (a ...)) zamiennikiem

jeden raz
źródło
Dzięki! Znaleziono instancje pierwszego przykładu (patrz (a053007djfgspwdf)), ale nie innych. Mimo to świetny początek. Będę się nim bawić, aby zobaczyć, co jeszcze mogę zrobić. Jeśli masz dalsze sugestie, byłbym bardzo wdzięczny. Dzięki jeszcze raz.
Michael Tuck
Czy kliknąłeś Zamień wszystko lub kontynuowałeś klikanie Zastąp, aby przełączać się między dopasowaniami podobnymi do korzystania z Znajdź następny ? Czy tekst, którego szukasz, zaczyna się (see (ai kończy ))? Jeśli masz ciągi, które kończą się pojedynczymi nawiasami, możesz przekształcić ostatni \)w grupę przechwytywania, (\)|)aby dopasować ciągi kończące się na ))„lub” ).
one.time
Próbowałem kilka zamienia, a następnie Zamień wszystko. Następnie ciąg wyszukiwania nic nie znalazł. Tekst dla wszystkich to: (zobacz tekst zróżnicowany )) Brak ciągów z pojedynczym nawiasiem, z wyjątkiem literówek.
Michael Tuck
Zaktualizowałem swoją odpowiedź alternatywnym RegEx, (\(see \(a|\(a)([^\)]+)\)(\)|)który będzie pasował do ciągów w twoim pytaniu.
one.time
LOL zaktualizowałeś swoją odpowiedź, kiedy edytowałem swoją odpowiedź. Spróbuję nowego.
Michael Tuck
1

Wypróbuj ten wzór: \(see \(a(.*)\)i upewnij się, że „. Pasuje do nowej linii” niezaznaczone i „zawinięte” zaznaczone.

ethmz
źródło
1

Ponieważ niektóre z nich były zbyt szczegółowe, abym mógł je zrozumieć, pozwólcie, że pokażę wam, co zrobiłem po przeczytaniu wszystkich tych rozwiązań, i jeszcze więcej, aby w końcu lepiej zrozumieć. (jest to proste podejście, może nie być najlepsze)

Chciałem usunąć wszystkie moje figury z całej strony. Ryc. 2.1, ryc. 1.1, itd.

To było:

<p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar<br><b>Figure 2.1</b></p>

Chciałem, żeby to skończyło:

 <p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar</p>

Ale każdy

miał inny numer rysunku, więc użyłem tego w wysublimowanym tekście 2.

  1. ctrl H.
  2. kliknij symbol „. *” w prawym dolnym rogu Sublime text 2, (regex)
  3. wpisane <br><b>Figure.*</b>
  4. zamień na: -leby puste

Zastąpiło to wszystkie moje instancje cyframi. zauważ, że użyłem. * gdzie byłyby liczby. Mam nadzieję że to pomoże.

Jim Schwetz
źródło
0

Dokładny regex , którego potrzebujesz, to:

\(see \(\w+\)((, \(\w+\))*( and \(\w+\)))?\)

Na przykład:

wprowadź opis zdjęcia tutaj

Po wybraniu Znajdź wszystko w bieżącym dokumencie wynik byłby następujący:

wprowadź opis zdjęcia tutaj

Zamiast tego możesz po prostu użyć opcji Zamień zgodnie z potrzebami.

Jeśli chcesz uwzględnić arównież wyrażenie regularne, możesz użyć:

\(see \(a\w+\)((, \(a\w+\))*( and \(a\w+\)))?\)
Roney Michael
źródło