Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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/1/database/9.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 2.7 regex.findall()不';t返回所有匹配项_Python 2.7 - Fatal编程技术网

Python 2.7 regex.findall()不';t返回所有匹配项

Python 2.7 regex.findall()不';t返回所有匹配项,python-2.7,Python 2.7,我试图找到一个关键词,并选择围绕该关键词的句子。输入文本(例如)如下所示。为了便于解释,我将关键字改为粗体: 董事会通过了《公司治理指南》,该指南的副本可在我们的互联网网站www.henryschein.com的公司信息公司治理标题下获得。我们的公司治理指导方针涉及以下主题:(i)董事会的作用,(ix)管理发展和继任规划,(xiv)提交董事辞职和(xv)与董事会沟通 除其他事项外,公司的公司治理指南规定,董事会的政策是定期审查与首席执行官的选择和绩效相关的问题。首席执行官必须至少每年向董事会报告

我试图找到一个关键词,并选择围绕该关键词的句子。输入文本(例如)如下所示。为了便于解释,我将关键字改为粗体:

董事会通过了《公司治理指南》,该指南的副本可在我们的互联网网站www.henryschein.com的公司信息公司治理标题下获得。我们的公司治理指导方针涉及以下主题:(i)董事会的作用,(ix)管理发展和继任规划,(xiv)提交董事辞职和(xv)与董事会沟通

除其他事项外,公司的公司治理指南规定,董事会的政策是定期审查与首席执行官的选择和绩效相关的问题。首席执行官必须至少每年向董事会报告公司的管理发展计划和继任计划。此外,董事会和首席执行官应定期讨论首席执行官关于在首席执行官突然辞职、退休或残疾的情况下继任者的建议

我使用的代码如下:

def find_sentences(text):
    p = re.compile(r'[^\.]*\.[^\.]*succession-planning[^\.]*\.[^\.]*\.')
    p2 = re.findall(p,text)

    if len(p2)>1:
        p3 = '######################################'.join(i for i in p2)
    else:
        p3 = p2[0]
    return p3

text2 = re.sub(r'succession planning[^\s^\w+]+','succession-planning', text)
sentence=find_sentences(text2)
结果如下:

def find_sentences(text):
    p = re.compile(r'[^\.]*\.[^\.]*succession-planning[^\.]*\.[^\.]*\.')
    p2 = re.findall(p,text)

    if len(p2)>1:
        p3 = '######################################'.join(i for i in p2)
    else:
        p3 = p2[0]
    return p3

text2 = re.sub(r'succession planning[^\s^\w+]+','succession-planning', text)
sentence=find_sentences(text2)
董事会通过了《公司治理指南》,该指南的副本可在我们的互联网网站www.henryschein.com的公司信息公司治理标题下获得。我们的公司治理指导方针涉及以下主题:(i)董事会的作用,(ix)管理发展和继任规划,(xiv)提交董事辞职和(xv)与董事会沟通

除其他事项外,公司的公司治理指南规定,董事会的政策是定期审查与首席执行官的选择和绩效相关的问题

问题:问题是当我打印上面的
p2
时,它只返回与第一个继任计划相关的句子。它不会返回该关键字的第二个结果。除了上述输出之外,我还需要一个代码来返回以下内容:

除其他事项外,公司的公司治理指南规定,董事会的政策是定期审查与首席执行官的选择和绩效相关的问题。首席执行官必须至少每年向董事会报告公司的管理发展计划和继任计划。此外,董事会和首席执行官应定期讨论首席执行官关于在首席执行官突然辞职、退休或残疾的情况下继任者的建议


当我用
p=re.compile(r'[^\.]*继任计划[^\.]*..])
更改
p
时,它返回两个发生,但不包括周围的句子。我认为findall不会返回重叠的匹配。我怎样才能让他们回来

答案:
.findall()
方法返回所有匹配项

.findall()
方法无法返回文本上的任何匹配项,该文本不包含设计的短语段(没有这样的子字符串==“继任计划”

是的,有“几乎相似”的片段,但没有“
-

Resume:regex没有找到一个根本不存在的文本段,这不应该受到责备


第二个“继任计划”-关键字包含(或不包含)不取决于
re.findall()
方法,但取决于任务定义要求的严格程度,该要求规定“围绕关键字”

弱解释可能包括这样一种情况,即关键字的右侧没有被任何句子延续词“包围”,而是以拉-停符号终止

强解释将限制这样的情况,即不能在关键字的两侧包围


您可能想了解*regex运算符的非贪婪版本。尾部需要这样做。除非您将此作为正则表达式练习,否则如果您的目标是将
继任计划
替换为
继任计划
,您只需执行
替换(“继任计划”,“继任计划”)
>>> mStrg = re.compile( r'....succession planning[^\.]+?\.[^\.]*?\.' )
>>> mWeak = re.compile( r'....succession planning[^\.]*?\.' )
>>> re.findall( mWeak, text )
[ "...", "...for management development and on succession planning."]
>>> len( re.findall( mWeak, text ) )
2