Notepad ++ - Usuń wszystko inne niż określone ciągi

2

Mam następujące ciągi, które chcę zachować i usunąć pozostałe: uicomp-type="example-string" uicomp-type='string-example'

Używam następującego wyrażenia regularnego, aby znaleźć te ciągi:

uicomp-type="(.*?)"|uicomp-type='(.*?)'

Jak wybrać ciągi inne niż te, które chcę zachować lub jakie jest przeciwieństwo powyższego wyrażenia regularnego?

Mam na myśli NOT uicomp-type="(.*?)"|uicomp-type='(.*?)'

EDYTOWAĆ:

Przykładowy zestaw danych:

"Div box"    => '<div uicomp-type='div-stndalone' class="ddasset-div-box"></div>',
                                        "HTML Code"  => '<div uicomp-type='div-code' class="ddasset-html-box"></div>',
                                        "Shortcode"  => '<div uicomp-type="shortcode" class="ddasset-shortcode-box"><input uicomp-type="input-shortcode" type="text" name="" value="" class="shortcodepreviewer" placeholder="Insert your shortcode here!"/></div>',
                                        "Features list"      => '<ul uicomp-type="ul" class="adtdd_ul">
                                                        <li uicomp-type="li"><i uicomp-type="icon" class="mif-checkmark"></i> <dx uicomp-type="text" class="dxeditable"> Features item 1</dx></li>
                                                        <li uicomp-type="li"><i uicomp-type="icon" class="mif-checkmark"></i> <dx uicomp-type="text" class="dxeditable"> Features item 2</dx></li>
                                                        <li uicomp-type="li"><i uicomp-type="icon" class="mif-checkmark"></i> <dx uicomp-type="text" class="dxeditable"> Features item 3</dx></li>
                                                        <li uicomp-type="li"><i uicomp-type="icon" class="mif-checkmark"></i> <dx uicomp-type="text" class="dxeditable"> Features item 4</dx></li>
                                                        <li uicomp-type="li"><i uicomp-type="icon" class="mif-checkmark"></i> <dx uicomp-type="text" class="dxeditable"> Features item 5</dx></li>
                                                        <div class="clear"></div>
                                                        </ul>',
                                        "Separator"  => '<div uicomp-type="div" class="adt-dd-separator adt-dd-separator-k"><hr uicomp-type="hr-separator"></div>',
                                        "Badges/ ribbon"  => '<div uicomp-type="null" class="dd-ribbon">
                                                            <div uicomp-type="div-ribbon" class="dd-ribbon-inner"><span uicomp-type="text" class="dxeditable">POPULAR</span></div>
                                                            </div>',
KeepMove
źródło
1
Powinno to być możliwe z negatywnym spojrzeniem (?!) , ale nie można go kliknąć. Wzór można skrócić do uicomp-type=["'](.*?)["']btw.
bertieb
Próbowałem użyć (?!)i nie ma szczęścia!
KeepMove,
Myślę, że da się to zrobić, ale moje wyrażenie regularne jest słabe. (?!.*uicomp-type=["'].*?["'])jest najbliższy, jaki mam; ale zwraca też całą masę bezużytecznych dopasowań o zerowej długości. Czuję, że brakuje mi czegoś oczywistego!
bertieb
Nie zrezygnowałeś z tego - czy masz mały zestaw przykładowych danych do przetestowania? Może uda się to zawęzić.
bertieb,
dodając przykład, tak jak prosiłeś!
KeepMove,

Odpowiedzi:

0

Nie jest to zwykłe wyrażenie regularne, ale szybkie makro może skopiować wszystkie wystąpienia do drugiej karty. Makra NP ++ są niesamowite, ale kilka dziwactw wymaga trochę kreatywności.

  1. <Zapisz>
  2. F3 (Znajdź następny)
  3. Ctrl-X (Nie można skopiować z powodu dziwactwa powodującego zresetowanie pozycji kursora)
  4. Ctrl-2 (Przełącz na inną (pustą) kartę)
  5. Ctrl-End (znowu kursor został utracony)
  6. Ctrl-V (Wklej w nowej karcie)
  7. Enter (dodaj linię do następnego)
  8. Ctrl-1 (powrót do dokumentu)
  9. <Zatrzymaj>

Następnie w oknie wyszukiwania kliknij „Policz”, co w twoim przykładzie zwróciło 25 wystąpień. Możesz więc „uruchomić makro wiele razy” (25).

Chad Schouggins
źródło