[英]Python Regex for string matching
我試圖與regex
匹配兩個規則。 我已經嘗試過在各種情況下進行測試,從而給我帶來了不良結果。
規則如下:
因此,在嘗試匹配這些規則時,我得到了以下信息:
def rule(word):
if re.match("\W", word):
return True
elif re.match("[-.\d]", word):
return True
else:
return False
Input: output
測試如下
word = '972.2' : True
word = '-88.2' : True
word = '8fdsf' : True
word = '86fdsf' : True
我希望這是錯誤的
word = '&^(' : True
還有更多測試,但我只想表明我想返回False。 似乎只匹配第一個字符,因此我嘗試更改正則表達式的表達式,但這會使情況變得更糟。
如文檔所述 , re.match
將返回一個MatchObject
,當字符串的開頭與正則表達式匹配時,該對象總是計算為True
。
因此,您需要在正則表達式中使用錨以確保僅對整個字符串進行匹配計數,例如[-.\\d]$
(注意美元符號)。
編輯:加上馬克斯說的-使用+
所以您的正則表達式將不只是匹配單個字母。
您的正則表達式(兩者)僅查看字符串的第一個字符。 更改它們以在末尾添加+$
,以確保您的字符串僅由目標字符組成。
據我了解,您需要排除1和2以外的所有內容。
嘗試這個:
import re
def rule(word):
return True if re.search("[^\W\d\-\.]+", word) is None else False
提供的樣品結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.