Jak zmusić NetBeans do wyszukiwania kodu HTML zawierającego nieparzyste białe znaki?

0

Na przykład w przypadku kodu zawierającego wiele takich fragmentów:

<section>
    <p><b>test</b></p>
</section>

Chcę móc wyszukać:

<section>
    <p><b>

Żebym mógł go zastąpić

<section>
    <h2>

Ale nie zastępuj innych <p><b>, które nie mają tagu sekcji bezpośrednio przed nim.

Nie mogę więc wyszukiwać, <p><b>ale NetBeans nie pozwala mi wklejać zaznaczeń spacją. Zakładam, że muszę wyszukać wyrażenie regularne czegoś takiego:

<section>(any-white-space)<p><b>

Ale nie jestem pewien, jak to zrobić. Każda pomoc będzie mile widziana.

Obywatel
źródło
Więc pytasz, jak zbudować wyrażenie regularne? Istnieje mnóstwo informacji na ten temat (na przykład: regular-expressions.info ). Czego już próbowałeś? Gdzie dokładnie utkniesz?
Ƭᴇcʜιᴇ007
@ techie007 Próbowałem (dosłownie) 20 różnych kombinacji wyszukiwania dokładnych tagów HTML ze zmiennymi białymi odstępami pomiędzy nimi i nie udało mi się go uruchomić.
Obywatel
Jestem ciekawy, jak próbowałeś dopasować zmienne białe znaki. Czy mógłbyś podać niektóre z wypróbowanych wzorów?
Jerry
Mam na myśli, które wzorce Regex próbowaliście? \spowinien obejmować na przykład spacje, tabulatory i znaki nowej linii lub grupę podobną [\n\r\t ](jeśli \snie jest obsługiwana w używanej wersji Regex).
ᴇcʜιᴇ007
1
Nie sądzę, że ma problem z \ s, myślę, że trudno jest dopasować tagi plus \ s. Mogę biec sam i znajduje whiteapce. Zamieszczam to na superużytkowniku, ponieważ mam nadzieję znaleźć kogoś z doświadczeniem na białym wyrażeniu regularnym na fasolkach sieciowych, a nie na głosach osób, które nie znają odpowiedzi.
Obywatel

Odpowiedzi:

1

Przetestowałem to w jEdit (który jest również napisany w Javie jak Netbeans, ale w tej chwili nie mam dostępu do Netbeans). Wypróbuj to dla wzorca wyrażenia regularnego:

(?<=<section>)(\s*)<p><b>([^<]+)</b></p>

z tym użytym jako zamiennikiem:

$1<h2>$2</h2>

Wzorzec wyrażenia regularnego mówi „dopasuj sekwencję, która jest poprzedzona <section>i zaczyna się od dowolnej ilości spacji (która jest przechowywana jako grupa przechwytywania 1), a następnie zawiera <p><b>co najmniej jeden znak, który nie jest <(i przechowuje te znaki jako grupę przechwytywania 2 ) i kończy się na </b></p>„.

Wzorzec zastępczy mówi po prostu: „zacznij od białych znaków z grupy przechwytywania 1, a <h2>następnie wyślij, a następnie znaki z grupy przechwytywania 2, które znaleziono w <b>elemencie, a następnie wyślij </h2>”. Przechwytywanie i wysyłanie białych znaków oznacza, że ​​nowy element h2 rozpocznie się od tych samych znaków nowej linii i tabulatorów, co element p, więc zmiana nie zniszczy żadnego ładnego formatowania.

Pamiętaj tylko, że regex nie ma możliwości ustalenia, gdzie jest on związany ze strukturą DOM, więc nie może wiedzieć, czy poprawne jest użycie h1, h2, h3, h4 itd. Ale jeśli tylko potrzebujesz, <h2>spróbuj tego.

(W rzeczywistości, jeśli używasz HTML5, możesz uruchomić każdy nowy element sekcji z <h1>elementem lub dowolnym innym numerem początkowym, a wymagana jest zgodna przeglądarka do automatycznego obsługi poziomów nagłówka).

Arkanon
źródło