如果它在html標記中,我需要編寫與單詞不匹配的正則表達式。Python正則表達式 - 在html標記中不匹配單詞
這裏是文字的樣本:
asdd qwe <a href="http://example.com" title="Some title with word qwe" class="external-link" rel="nofollow"> qwe
我現在正則表達式如下:
(?!(\<.+))[^a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ](<class="bad-word"(?: style="[^"]+")?>)?(qwe)(<>)?[^a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ](?!.+\>)
這是一個有點複雜,但everythink作品期待,當我測試它regex101 .com和regexr.com,它只匹配html標籤後面的單詞。
任何想法爲什麼?
編輯:
我不想使用HTML解析器或DOM操作,我不想改變這麼多的代碼。
def test_tagged_word_present(self):
input = 'words <a href="example.com" title="title with word qwe" class="external-link" rel="nofollow"> qwe some other words'
expected = 'words <a href="example.com" title="title with word qwe" class="external-link" rel="nofollow"><strong class="bad-word" style="color:red">qwe</strong> some other words'
parser = self.get_test_parser(input, search_word='qwe')
text = parser.mark_words()
self.assertEqual(text, expected)
一切完美,但正則表達式仍緩存在標題qwe
。
如何使用解析器,將HTML的文本內容反饋給您,然後與文本內容進行匹配?通過這樣做,標籤內的文本將不會返回給您。 – hwnd
您是否試圖匹配<>標籤之外的所有內容? – Ephreal
@Ephreal我試圖匹配每一個沒有任何html標籤的詞。 – Cosaquee