Regex: ค้นหาแท็ก html เฉพาะที่มีคำเหล่านี้ (สตริง)
ฉันมีแท็กนี้:
<span class="text_obisnuit2">* Notă:</span>John Wells - <em>My Dreams</em>, Albatros Books, 1986.</p>
และอันนี้:
<span class="text_obisnuit1">* Notă:</span>Mariah Carey - <em>Lovers on the road</em>, BackStreet Books, 1965.</p>
ดังนั้นฉันต้องการที่จะหาแท็กเหล่านั้นโดยเฉพาะอย่างยิ่ง<span class="text_obisnuit2">
ที่มีคำเหล่านี้ (สตริง) Albatros
และ<em>
และ</em>
(บรรทัดแรก)
คำตอบ
นี่เป็นวิธีที่ตรงไปตรงมา แต่ต้องใช้ 'Albatros' อยู่หลัง<em>
แท็ก ( สาธิต ):
(<span class="text_obisnuit2">).*<em>.*<\/em>.*Albatros.*
รายการต่อไปนี้ไม่สนใจว่าจะเป็นลำดับใด ( สาธิต ):
(<span class="text_obisnuit2">).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)
นี่คือรูปแบบอื่นโดยที่ตัวเลขหลังtext_obisnuit
ไม่สำคัญและspan
แท็กทั้งหมดจะถูกจับเป็นกลุ่มแรก ( การสาธิต ):
(<span class="text_obisnuit\d+">.*<\/span>).*(<em>.*<\/em>.*Albatros.*|Albatros.*<em>.*<\/em>.*)
regexes ทั้งหมดถือว่าแต่ละรายการอยู่ในบรรทัดของตัวเองในไฟล์ บางทีมันอาจจะสมเหตุสมผลกว่าที่จะตรวจจับ<p>
และ</p>
เป็นขอบเขต แต่สำหรับการนั้นเราจำเป็นต้องตัดตอนไฟล์ที่คุณป้อนออกให้มากขึ้น
- Ctrl+F
- หาอะไร:
<span class="text_obisnuit2">(?=.*?<em>.*?</em>)(?=.*?\bAlbatros\b).*$
- ตรวจสอบ รอบ ๆ
- ตรวจสอบ นิพจน์ทั่วไป
- UNCHECK
. matches newline
- Find All in Current Document
คำอธิบาย:
<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
ภาพหน้าจอ:
