Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_Python 3.x - Fatal编程技术网

Python 如何提取特定模式后出现的字符串?

Python 如何提取特定模式后出现的字符串?,python,regex,python-3.x,Python,Regex,Python 3.x,我有这样的字符串: str1 = "Information name: Wen Moyes address: Mcity." str2 = "resume Name : Sam Win Father's name: Dean address" str3 = "Father's name: Dan. Acknowledge" str4 = "Father's Name: Joe Cena Name :- John Cena" 我想从名称后面的每个字符串中提取名称。如果字符串包含父亲的名字,它应该

我有这样的字符串:

str1 = "Information name: Wen Moyes address: Mcity."
str2 = "resume Name : Sam Win Father's name: Dean address"
str3 = "Father's name: Dan. Acknowledge"
str4 = "Father's Name: Joe Cena Name :- John Cena"
我想从名称后面的每个字符串中提取名称。如果字符串包含父亲的名字,它应该忽略该部分,只查找名字

我的预期输出是

Wen Moyes
Sam Win
None
John Cena
我所尝试的

Wen Moyes
Sam Win
None
John Cena
我在下面使用了
regex

re.findall(r'name\s*:(\s*\w*\s\w*)', str1.lower())
这给我的输出是:

[' wen moyes']
[' sam win', ' dean address']
[' dan']
[' joe cena']
我如何处理这个问题?
有没有不使用正则表达式的替代方法


谢谢

一个选项是对父亲的
进行反向查找,然后将
名称:
与可选空格/破折号匹配,然后捕获以下
(\w+\w+)

str1=“信息名称:文莫是地址:Mcity。”
str2=“简历名称:山姆·温父亲姓名:院长地址”
str3=“父亲姓名:丹。确认”
str4=“父亲姓名:乔·塞纳姓名:-约翰·塞纳”

pattern=re.compile(r)(?不清楚具体的条件是什么。例如,“Joe Cena”(或“Joe Cena Name”)为什么不合格?因为这是父亲的名字。我只想提取名字。等等,我会编辑我的问题以获得更多的澄清。这是一个非常松散的结构输入。要可靠地解析它会非常困难。为什么
Dan.Acknowledge
没有包含在预期的输出中?@deceze我已经编辑了我的问题来解释为什么它没有“不符合条件。您可以查看它。您好,兄弟,这不清楚,如果字符串中有两个字段,您必须提到一个分隔符,如str1=”信息名称:Wen Moyes,地址:McCity。“然后您可以轻松拆分它。这就是我要查找的内容。我不确定如何为特定单词反向查找。谢谢:-)