簡體   English   中英

Re.match() 總是返回 none

[英]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。 如果wekjbABB在字符串中,我想打印成功,但我總是得到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布爾值( TrueFalse )結果,您必須檢查結果是否為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM