[英]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.