簡體   English   中英

了解Python中的研究

[英]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字母,數字,下划線和空格(並且至少需要一個字符)。

您需要學習一些有關正則表達式的知識。

我個人是從Google課程開始的,足以閱讀這些文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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