給定一個來自這個鏈接的推文資料集,其中有一個content列,如下:
我希望增加一個新的列,以識別該推文是否提到特朗普。重碼父(^|[^A-Za-z0-9])Trump([^A-Za-z0-9]|$)似乎可行,但我不太理解。我已經用下面的代碼進行了測驗:
Test2給出了輸出。
txt1 = "anti-Trump protesters"/span>
re.search("(^|[^A-Za-z0-9])Trump([^A-Za-z0-9]|$)"/span>, txt1)
出局:
<_sre. SRE_Match object; span=(4, 11), match='-Trump' >
Test2回傳None,因為它沒有像預期那樣匹配:
txt2 = 'I got Trumped'。
re.search("(^|[^A-Za-z0-9])Trump([^A-Za-z0-9]|$)"/span>, txt2)
有誰能幫助解釋一下這個模式。非常感謝。
uj5u.com熱心網友回復:
(^|[^A-Za-z0-9])部分有|,表示 "或"。左邊的^,是字串的開始。右邊的[^A-Za-z0-9],匹配任何非字母或數字的字符。簡而言之,當 "Trump "位于字串的開頭,或者前面有一個非字母數字字符時,它就會匹配。
([^A-Za-z0-9]|$)遵循一個類似的模式,左邊匹配任何非字母或數字的字符。右邊的$則匹配字串的結尾。同樣地,當 "Trump "位于字串的末尾或后面是一個非字母數字字符時,它也會匹配。
因此,底線是,當 "Trump "位于字串的開頭或前面有任何非字母數字的字符時,它就會匹配,如果它也在字串的結尾或后面有一個非字母數字的字符,它也會匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/307569.html
標籤:
上一篇:處理不同數量的變數的Regex
