[英]Re.match() returns always none
我覺得有點愚蠢,但它不起作用:
import re
a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"
print re.match(ur'/(wekjb|ABB)/',a)
if re.match(ur'/(wekjb|ABB)/',a):
print 'success'
我有ur'
,如果用戶給定a
是unicode。 如果wekjb
或ABB
在字符串中,我想打印成功,但我總是得到None
作為match
的結果。
re.match
隱式錨定到字符串的開頭。 如果要在字符串中搜索可以位於其中任何位置的子字符串,則需要使用re.search
:
import re
a = " ebrj wjrbw erjwek wekjb rjERJK ABB RAEJKE BWE RWEJBEWJ B KREWBJ BWERBJ32J3B23B J BJ235JK BJJ523 2"
print re.search(ur'(wekjb|ABB)',a).group()
if re.search(ur'(wekjb|ABB)',a):
print 'success'
輸出:
wekjb
success
此外,Python 正則表達式不需要在開頭和結尾有/
。
最后,我將.group()
添加到print
行的末尾,因為我認為這就是您想要的。 否則,你會得到類似<_sre.SRE_Match object at 0x01812220>
,這不是很有用。
這是因為match
方法如果找不到預期的模式則返回None
,如果找到該模式,它將返回一個類型為_sre.SRE_match
的對象。
因此,如果您想要match
布爾值( True
或False
)結果,您必須檢查結果是否為None
!
您可以像這樣檢查文本是否匹配:
string_to_evaluate = "Your text that needs to be examined"
expected_pattern = "pattern"
if re.match(expected_pattern, string_to_evaluate) is not None:
print("The text is as you expected!")
else:
print("The text is not as you expected!")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.