我想只匹配字母字符,即a-z
或A-Z
,它们也可以包含空格。目的是匹配任何多字名称,如'Vivek Jha'
。我希望以下正则表达式能够正常工作:
re.match(r'^[aA-zZ\s]+$', name)
它适用于所有情况,但也匹配单词:'Vivek_Jha'
我不想和下划线匹配。这个_
如何匹配。
我曾在Perl和Tcl中使用Regex,但我认为Python正在做更多我能想象的事情。
答案 0 :(得分:4)
如果您只想匹配字母字符,也可以包含空格,只需使用:
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
答案 1 :(得分:3)
A-z
正在捕获从ASCII字符A
到ASCII字符z
的所有内容。这包括_
字符以及许多其他字符。有关此问题的详细信息,您可以查看Wikipedia's ASCII article。
要解决此问题,您需要执行以下操作:
re.match(r'[a-zA-Z\s]+$', name)
这告诉Python只捕获ASCII范围a-z
和A-Z
中的字符。
此外,我删除了^
,因为默认情况下re.match
匹配字符串的开头。
答案 2 :(得分:2)
尝试使用a-zA-Z
代替aA-zZ
。
a-z之间没有任何东西,但字母,A-Z相同,但A-z之间有很多东西......显然包括下划线字符。