为什么不是';这个正则表达式不能在我的Python中工作吗?
我正试图编写一个Python程序来区分名字、姓氏和中间名。我使用正则表达式来实现它,下面是有问题的代码 问题是姓氏是取中间名,我想在末尾使用大写字母S会使它只取前面有空格的单词,而不是后面有空格的单词,以查找姓氏,但为什么不是';这个正则表达式不能在我的Python中工作吗?,python,regex,Python,Regex,我正试图编写一个Python程序来区分名字、姓氏和中间名。我使用正则表达式来实现它,下面是有问题的代码 问题是姓氏是取中间名,我想在末尾使用大写字母S会使它只取前面有空格的单词,而不是后面有空格的单词,以查找姓氏,但lastNameRegex只是取中间名 此外,该代码将采用类似“John Joseph Smith”的名称,并将每个名称分开,因此名为“\w+”,姓为“\s\w*\s” 谢谢大家的帮助,我对这些东西都很陌生,所以欢迎大家提出建设性的批评。谢谢!:) 如果希望正则表达式仅在字符串中的特
lastNameRegex
只是取中间名
此外,该代码将采用类似“John Joseph Smith”的名称,并将每个名称分开,因此名为“\w+”,姓为“\s\w*\s”
谢谢大家的帮助,我对这些东西都很陌生,所以欢迎大家提出建设性的批评。谢谢!:)
如果希望正则表达式仅在字符串中的特定位置匹配,则应锚定正则表达式
^
匹配字符串的开头,$
匹配字符串的结尾
firstNameRegex = re.compile(r'^\w+')
middleNameRegex = re.compile(r'(?<=\s)\w*(?=\s)')
lastNameRegex = re.compile(r'\w+$')
firstNameRegex=re.compile(r'^\w+)
middleNameRegex=re.compile(r'(?您的正则表达式没有锚定,因此它们将匹配字符串中的任何位置。为什么姓氏regexp不应该也匹配中间名?\s
匹配空格,\w+
匹配Josep
,以及\s
匹配h
。使用regex的代码在哪里?请给出一个输入示例,然后是e代码产生的输出,以及预期的输出
firstNameRegex = re.compile(r'^\w+')
middleNameRegex = re.compile(r'(?<=\s)\w*(?=\s)')
lastNameRegex = re.compile(r'\w+$')