Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';这个正则表达式不能在我的Python中工作吗?_Python_Regex - Fatal编程技术网

为什么不是';这个正则表达式不能在我的Python中工作吗?

为什么不是';这个正则表达式不能在我的Python中工作吗?,python,regex,Python,Regex,我正试图编写一个Python程序来区分名字、姓氏和中间名。我使用正则表达式来实现它,下面是有问题的代码 问题是姓氏是取中间名,我想在末尾使用大写字母S会使它只取前面有空格的单词,而不是后面有空格的单词,以查找姓氏,但lastNameRegex只是取中间名 此外,该代码将采用类似“John Joseph Smith”的名称,并将每个名称分开,因此名为“\w+”,姓为“\s\w*\s” 谢谢大家的帮助,我对这些东西都很陌生,所以欢迎大家提出建设性的批评。谢谢!:) 如果希望正则表达式仅在字符串中的特

我正试图编写一个Python程序来区分名字、姓氏和中间名。我使用正则表达式来实现它,下面是有问题的代码

问题是姓氏是取中间名,我想在末尾使用大写字母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+$')