在子字符串中查找单词

avi*_*hah 3 python regex string algorithm

我必须在大字符串的子字符串匹配之前和之后提取两个单词。例如:

sub = 'name'

str = '''My name is Avi. Name identifies who you are. It is important to have a name starting with the letter A.'''
Run Code Online (Sandbox Code Playgroud)

现在,我必须找到str中所有出现的sub,然后返回以下内容:

(My name is Avi), (Name identifies who), (have a name starting with)

请注意,如果re是字符串后的句号,则仅返回字符串前的单词,如上例所示。

我尝试了什么?

>>> import re
>>> text = '''My name is Avi. Name identifies who you are. It is important to have a name starting with the letter A.'''
>>> for m in re.finditer( 'name', text ):
...     print( 'name found', m.start(), m.end() )
Run Code Online (Sandbox Code Playgroud)

这给了我匹配的子字符串的开始和结束位置。关于如何在其中查找单词,我无法继续进行。

per*_*eal 5

import re
sub = '(\w*)\W*(\w*)\W*(name)\W*(\w*)\W*(\w*)'
str1 = '''My name is Avi. Name identifies who you are. It is important to have a name starting with the letter A.'''
for i in re.findall(sub, str1, re.I):
    print " ".join([x for x in i if x != ""])
Run Code Online (Sandbox Code Playgroud)

输出量

My name is Avi
Name identifies who
have a name starting with
Run Code Online (Sandbox Code Playgroud)

要么,

sub = '\w*\W*\w*\W*name\W*\w*\W*\w*'
for i in re.findall(sub, str1, re.I):
    i=i.strip(" .")
    print i
Run Code Online (Sandbox Code Playgroud)