Regex: Temukan tag html tertentu yang berisi kata-kata ini (string)
Saya memiliki tag ini:
<span class="text_obisnuit2">* Notă:</span>John Wells - <em>My Dreams</em>, Albatros Books, 1986.</p>
dan yang satu ini:
<span class="text_obisnuit1">* Notă:</span>Mariah Carey - <em>Lovers on the road</em>, BackStreet Books, 1965.</p>
Jadi, saya ingin menemukan tag html tertentu <span class="text_obisnuit2">
yang berisi kata-kata ini (string): Albatros
dan <em>
dan </em>
(Baris pertama)
Jawaban
Ini sangat mudah, tetapi membutuhkan 'Albatros' untuk muncul setelah <em>
tag ( demo ):
(<span class="text_obisnuit2">).*<em>.*<\/em>.*Albatros.*
Yang berikut tidak peduli urutannya ( demo ):
(<span class="text_obisnuit2">).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)
Berikut adalah variasi lain, di mana digit setelah text_obisnuit
tidak penting dan seluruh span
tag ditangkap sebagai grup pertama ( demo ):
(<span class="text_obisnuit\d+">.*<\/span>).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)
Semua ekspresi reguler menganggap entri masing-masing pada barisnya sendiri di file. Mungkin lebih masuk akal untuk mendeteksi <p>
dan </p>
sebagai batasan, tetapi untuk itu kami perlu memiliki kutipan yang lebih besar dari file input Anda.
- Ctrl+F
- Menemukan apa:
<span class="text_obisnuit2">(?=.*?<em>.*?</em>)(?=.*?\bAlbatros\b).*$
- PERIKSA Bungkus sekitar
- PERIKSA Ekspresi reguler
- UNCHECK
. matches newline
- Find All in Current Document
Penjelasan:
<span class="text_obisnuit2"> # literally
(?= # positive lookahead, make sure we have after:
.*? # 0 or more any character but newline, not greedy
<em> # literally open em tag
.*? # 0 or more any character but newline, not greedy
</em> # literally close em tag
) # end lookahead
(?= # positive lookahead, make sure we have after:
.*? # 0 or more any character but newline, not greedy
\bAlbatros\b # Albatros with word boundaries
) # end lookahead
.* # 0 or more any character but newline
$ # end of line
Tangkapan layar:
