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

Viv*_*Jha 2 python regex

我只想匹配字母字符,即a-zor A-Z,它也可以包含空格。目的是匹配任何多词名称,如'Vivek Jha'. 我希望以下正则表达式可以工作:

re.match(r'^[aA-zZ\s]+$', name)
Run Code Online (Sandbox Code Playgroud)

它适用于所有情况,但也匹配一个词: 'Vivek_Jha'

我不想和下划线匹配。这是_如何匹配的。

我曾在 Perl 和 Tcl 中研究过 Regex,但我认为 Python 正在做更多我能想象的事情。

小智 6

A-z正在捕获从 ASCII 字符A到 ASCII 字符的所有内容z。这包括_角色以及许多其他角色。有关这方面的更多信息,您可以查看Wikipedia 的 ASCII 文章

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

re.match(r'[a-zA-Z\s]+$', name)
Run Code Online (Sandbox Code Playgroud)

这告诉 Python 只捕获 ASCII 范围内的字符a-zA-Z.

此外,我默认从字符串的开头删除了^因为re.match匹配。