Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于匹配多字名称的Python正则表达式_Python_Regex - Fatal编程技术网

用于匹配多字名称的Python正则表达式

用于匹配多字名称的Python正则表达式,python,regex,Python,Regex,我只想匹配字母字符,即a-z或a-z,它们也可以包含空格。其目的是匹配任何多词名称,如“Vivek Jha”。我希望以下正则表达式能够起作用: re.match(r'^[aA-zZ\s]+$', name) 它适用于所有情况,但也匹配一个词:“Vivek_Jha” 我不希望和下划线匹配。这是如何匹配的 我在Perl和Tcl中使用过正则表达式,但我认为Python做的事情比我想象的要多。A-z捕获了从ASCII字符A到ASCII字符z的所有内容。这包括\u字符以及许多其他字符。有关这方面的更多信

我只想匹配字母字符,即
a-z
a-z
,它们也可以包含空格。其目的是匹配任何多词名称,如
“Vivek Jha”
。我希望以下正则表达式能够起作用:

re.match(r'^[aA-zZ\s]+$', name)
它适用于所有情况,但也匹配一个词:
“Vivek_Jha”

我不希望和下划线匹配。这是如何匹配的


我在Perl和Tcl中使用过正则表达式,但我认为Python做的事情比我想象的要多。

A-z
捕获了从ASCII字符
A
到ASCII字符
z
的所有内容。这包括
\u
字符以及许多其他字符。有关这方面的更多信息,您可以查看

要解决此问题,您需要执行以下操作:

re.match(r'[a-zA-Z\s]+$', name)
这告诉Python只捕获ASCII范围
a-z
a-z
中的字符


另外,我删除了
^
,因为默认情况下
re.match
与字符串开头匹配。

尝试
a-zA-Z
而不是
aA zZ


a-z之间除了字母什么都没有,a-z也是一样,但a-z之间有很多东西。。。显然包括下划线字符。

如果只想匹配字母字符,也可以包含空格,只需使用:

r'^[a-zA-Z ]+$'
请注意,
aA zZ
对于匹配字母是错误的,小写字母必须使用
a-z
,大写字母必须使用
a-z
。 注:

\s
元字符用于查找空白字符

空白字符可以是:

A space character
A tab character
A carriage return character
A new line character
A vertical tab character
A form feed character

很高兴能帮上忙!请不要忘记通过单击答案旁边的复选框来接受答案。这样做让人们知道这个问题已经解决了。