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).