[英]Understanding re.search in Python
我正在嘗試允許用戶輸入字母數字,下划線和空格作為名稱。 我一直在使用if not re.search(r'^[\\w-]+$', name):
檢查名稱是否包含字母數字,下划線和空格。 但是在這里我只能輸入一個單詞,不能輸入多個單詞。 我究竟做錯了什么?
您沒有做任何明顯錯誤的事情。 您的問題也不是很清楚,所以我將嘗試解決幾個可能的問題。
在正則表達式中,您有\\w
,根據re
文檔 ,它只是字母數字字符和下划線。 您尚未包含的是空格字符,因此帶空格的任何名稱(包括姓和名之間的分隔符)都將與您的正則表達式匹配,因此由not
變為False
。 您應該執行以下操作來檢查是否存在任何非字母數字字符/下划線/空格:
if not re.search(r'^[\w- ]+$', name):
或者,如果您由於某種原因也擔心換行符( \\n
)或制表符( \\t
)和其他類型的空白:
if not re.search(r'^[\w\s- ]+$', name):
這是因為正則表達式一次只能搜索一個字符串。 如果要讓它檢查多個名稱,則應針對每個名稱運行正則表達式,格式如下:
# assuming name_list is a list of name strings
for name in name_list:
if not re.search(r'^[\w- ]+$', name):
# do whatever
您的正則表達式不允許使用空格(而是允許您在問題中未提及的破折號)。
if not re.search(r'^[\w ]+$', name):
僅允許ASCII字母,數字,下划線和空格(並且至少需要一個字符)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.