Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,我对正则表达式的语法非常陌生,我已经读过一些关于libary的文章。我试图从一个简单的句子中提取名字,但我发现自己遇到了麻烦,下面我举了一个我所做的例子 x = 'Fred used to play with his brother, Billy, both are 10 and their parents Jude and Edde have two more kids.' import re re.findall('^[A-Za-z ]+$',x) 任何人都可以向我解释什么是错误的以及

我对正则表达式的语法非常陌生,我已经读过一些关于libary的文章。我试图从一个简单的句子中提取名字,但我发现自己遇到了麻烦,下面我举了一个我所做的例子

x = 'Fred used to play with his brother, Billy, both are 10 and their parents Jude and Edde have two more kids.'

import re

re.findall('^[A-Za-z ]+$',x)
任何人都可以向我解释什么是错误的以及如何进行?

使用

re.findall(r'\b[A-Z]\w*', x)

看。它匹配以大写字母开头的单词,并具有任意数量的字母、数字或下划线。

我认为您的正则表达式有两个问题

  • 您想提取句子的名称。您需要删除行首和行尾
  • 名称以大写字母开头,没有空格。您应该删除正则表达式中的
您可以使用下面的正则表达式

\b[A-Z][A-Za-z]+\b
我还尝试在python上测试结果

x = 'Fred used to play with his brother, Billy, both are 10 and their parents Jude and Edde have two more kids.'

import re

result = re.findall('\\b[A-Z][A-Za-z]+\\b',x)
print(result)
结果

['Fred', 'Billy', 'Jude', 'Edde']
尝试
re.findall(r'\b[A-Z][A-Za-Z]*\b',x)