Normal ifade: Bu kelimeleri (dizeleri) içeren belirli html etiketlerini bulun

Aug 19 2020

Bu etiketlerim var:

<span class="text_obisnuit2">* Not&#259;:</span>John Wells - <em>My Dreams</em>, Albatros Books, 1986.</p>

ve bu:

<span class="text_obisnuit1">* Not&#259;:</span>Mariah Carey - <em>Lovers on the road</em>, BackStreet Books, 1965.</p>

Yani, o belirli html etiketlerini bulmak istiyorum <span class="text_obisnuit2">bu kelimeler (dizeleri) içerir: Albatrosve <em>ve </em>(ilk satır)

Yanıtlar

4 Glorfindel Aug 19 2020 at 16:49

Bu basit bir yöntemdir, ancak "Albatros" un <em>etiketinden sonra gelmesini gerektirir ( demo ):

(<span class="text_obisnuit2">).*<em>.*<\/em>.*Albatros.*

Aşağıdakiler hangi sırayla oldukları umurunda değil ( demo ):

(<span class="text_obisnuit2">).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)

Burada, sonraki rakamların text_obisnuitönemli olmadığı ve tüm spanetiketin ilk grup ( demo ) olarak yakalandığı başka bir varyasyon :

(<span class="text_obisnuit\d+">.*<\/span>).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)

Tüm normal ifadeler, girişlerin her birinin dosyada kendi satırında olduğunu varsayar. Belki de için algılamak için daha mantıklı <p>ve </p>sınırları gibi, ama bunun için de giriş dosyasından daha büyük bir alıntıyı olması gerekir.

4 Toto Aug 19 2020 at 17:01
  • Ctrl+F
  • Ne buldun: <span class="text_obisnuit2">(?=.*?<em>.*?</em>)(?=.*?\bAlbatros\b).*$
  • KONTROL Et Etrafı sarın
  • KONTROL Normal ifade
  • DENETİMİ KALDIR . matches newline
  • Find All in Current Document

Açıklama:

<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

Ekran görüntüsü: