繁体   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