我在学regex。你知道,人们可能有中间名,也可能没有中间名。我想编写一个灵活的正则表达式,以便将来编译和使用。但是,我不能这样做。如有任何建议和/或帮助,将不胜感激。下面是我的正则表达式,表示没有中间名的name
import re
p = re.compile(r"\W+\s+(?P<firstname>\w+)\s+(?P<lastname>\w+)")
name = "John Drell"
m = p.search(name)
我没有任何问题的名称没有中间名。但是,我无法为可能有中间名或没有中间名的名称编写正确的灵活名称。这是我的一个测试代码
import re
p = re.compile(r"\W+\s+(?P<firstname>\w+)\s+(?:P<middlename>[A-Z]*)(?P<lastname>\w+)")
name = "John M. Drell"
m = p.search(name)
这个脚本只允许使用中间名命名,否则我会收到错误消息:“NonType”对象没有属性“groups”
如果你能纠正我的错误,我将不胜感激
使用
split()
:见Python proof
使用regex,学习使用可选组和
\S
匹配任何非空白字符:见regex proof
解释
相关问题 更多 >
编程相关推荐