![정규식: 단어가 포함되지 않은 html 클래스를 선택하세요.](https://rvso.com/image/1692538/%EC%A0%95%EA%B7%9C%EC%8B%9D%3A%20%EB%8B%A8%EC%96%B4%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20html%20%ED%81%B4%EB%9E%98%EC%8A%A4%EB%A5%BC%20%EC%84%A0%ED%83%9D%ED%95%98%EC%84%B8%EC%9A%94..png)
"neculaifantaru"라는 단어가 포함된 클래스가 없는 모든 파일을 찾고 싶습니다.
나는이 2 개의 HTML 동일한 클래스를 가지고 있습니다 :
<p class="mb-40px">I must go home, but I don't know the road.</p>
<p class="mb-40px">I love myself , because I love nature.</p>
<p class="mb-40px">Cercetare estetică, care poartă <a href="https://neculaifantanaru.com/en/qualities-of-a-leader.html" class="color-bebe" target="_new">lumina artei</a> sinestezice</p>
출력은 다음과 같아야 합니다.
<p class="mb-40px">I must go home, but I don't know the road.</p>
<p class="mb-40px">I love myself , because I love nature.</p>
내 정규식은 그다지 좋지 않습니다.
(?-si:<p class="mb-40px">|(?!\A)\G)(?s-i:(?!</p>).)*?\K(?-si:?!neculaifantanaru)
파이썬에서는 쉽습니다. 하지만 동일한 작업을 수행하려면 정규식이 필요합니다.
import os
import re
# Calea către directorul în care doriți să căutați
cale_director = 'g:/1/GATA ro'
# Parcurgeți toate fișierele din director
for nume_fisier in os.listdir(cale_director):
cale_fisier = os.path.join(cale_director, nume_fisier)
# Deschideți fiecare fișier și citiți conținutul acestuia
with open(cale_fisier, 'r') as fisier:
continut = fisier.read()
# Căutați toate tagurile <p class="mb-40px">.*?</p>
taguri_p = re.findall(r'<p class="mb-40px">(.*?)</p>', continut, re.DOTALL)
# Verificați dacă există vreun tag care conține cuvântul "neculaifantanaru"
tag_cu_neculaifantanaru = any('neculaifantanaru' in tag for tag in taguri_p)
# Verificați dacă nu există niciun tag care să conțină cuvântul "neculaifantanaru"
if not tag_cu_neculaifantanaru:
print(f'Fișierul "{nume_fisier}" nu conține niciun tag <p class="mb-40px"> care să includă cuvântul "neculaifantanaru".')
답변1
이것을 시도해 보세요. 작동합니다.
찾다: (?s)\A(?!.*(neculaifantanaru).*$)
<p class="mb-40px">
... 와 사이를 통합할 필요가 없는 경우</p>
답변2
- Ctrl+H
- 무엇을 찾다:
<p class="mb-40px">(?:(?!</p>).)*neculaifantanaru.*?</p>\R?
- 다음으로 교체:
LEAVE EMPTY
- 진드기 줄 바꿈
- 선택하다 정규식
- 진드기
. matches newline
- Replace all
설명:
<p class="mb-40px"> # literally
(?: # non capture group
(?! # negative lookahead, make sure we haven't </p> after
</p> # literally
) # end lookahead
. # any character
)* # end group, may appear 0 or more times
neculaifantanaru # literally
.*? # 0 or more any character, not greedy
</p> # literally
\R? # optional line break
스크린샷(이전):
스크린샷(이후):