首页 > 解决方案 > 需要一个可以使用特殊字符(连字符、撇号等)验证名称的 python 正则表达式

问题描述

我正在尝试创建一个可以匹配任何名称的 python 正则表达式。我正在抓取一个网页并寻找<h1>标签并在它之间抓取名称。名字可以包括James Dean、James-Dean、Brian O'Quin、Jame Joe-Harden等...

这是我一直在使用的第一个正则表达式,但它并没有捕捉到所有的名字

<h1>[A-Z]{1}[a-z]+\s[A-Z]{1}[']?[A-Z]?[-]?[A-Z]?[a-z]+

标签: pythonregex

解决方案


也许是这样:

<h1>(([-'\w]+\s?)+)<h1>

解释:

-匹配自身,\ w匹配字母和数字,加号是捕获这些事件中的一个或多个。此外,在此之后是可选的空格字符,以支持组合名称。
最后,最后一个+加号确保您可以重复我刚刚描述的结构。
希望这有帮助。


推荐阅读