正则表达式(^ | [^ A-Za-z0-9])特朗普([^ A-Za-z0-9] | $)的意思.



给定一个来自此链接的tweet数据集,其中content列如下:

我希望添加一个新专栏来确定推文是否提到了特朗普。正则表达式模式(^|[^A-Za-z0-9])Trump([^A-Za-z0-9]|$)似乎行得通,但我不太理解。我用下面的代码进行了测试:

Test1给出匹配后的输出:

txt1 = "anti-Trump protesters"
re.search("(^|[^A-Za-z0-9])Trump([^A-Za-z0-9]|$)", 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]|$)", txt2)

有人可以帮我解释一下这个模式。万分感谢。

(^|[^A-Za-z0-9])部分有"|",即"或"。左边的^是字符串的开始。右边的[^A-Za-z0-9]匹配非字母或数字的任何字符。简而言之,当"Trump"位于字符串的开头,或者前面有一个非字母数字字符时,它会匹配。

([^A-Za-z0-9]|$)遵循类似的模式,左侧匹配非字母或数字的任何字符。右边,$匹配字符串的末尾。同样,当"Trump"位于字符串末尾或后跟非字母数字字符时,它也会匹配。

所以,底线是,它匹配位于字符串开头或前面有任何非字母数字字符的"Trump",也匹配位于字符串末尾或后面有非字母数字字符的"Trump"。

相关内容

最新更新