首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >regex .findall()不返回所有匹配

regex .findall()不返回所有匹配
EN

Stack Overflow用户
提问于 2014-10-13 02:33:41
回答 1查看 619关注 0票数 0

我试图找到一个关键字,并选择关键词周围的句子。输入文本(例如)如下。为了解释起见,我使用了关键字粗体:

董事会通过了“公司治理准则”,其副本可在www.henryschein.com的互联网网站上查阅,标题为“公司信息-公司治理”。我们的公司治理准则涉及以下主题:(i)董事会的作用、(9)管理发展和继任规划、(xiv)提交董事辞职和(xv)与董事会沟通。 除其他事项外,公司的公司治理准则规定,董事会的政策是定期审查与首席执行官的遴选和业绩有关的问题。至少每年,首席执行官必须向董事会报告公司的管理发展计划和继任计划。此外,董事会和首席执行干事应定期讨论首席执行干事在首席执行官突然辞职、退休或残疾时对接班人提出的建议。

我使用的代码如下:

代码语言:javascript
运行
复制
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)董事会的作用、(9)管理发展和继任规划、(xiv)提交董事辞职和(xv)与董事会沟通。 除其他事项外,公司的公司治理准则规定,董事会的政策是定期审查与首席执行官的遴选和业绩有关的问题。

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

除其他事项外,公司的公司治理准则规定,董事会的政策是定期审查与首席执行官的遴选和业绩有关的问题。至少每年,首席执行官必须向董事会报告公司的管理发展计划和继任计划。此外,董事会和首席执行干事应定期讨论首席执行干事在首席执行官突然辞职、退休或残疾时对接班人提出的建议。

当我用p更改p = re.compile(r'[^\.]*succession-planning[^\.]*\.')时,它会返回这两个项,但不包括周围的句子。我想findall没有返回重叠的匹配。我怎么才能让他们回来?

EN

回答 1

Stack Overflow用户

发布于 2014-10-13 04:29:17

.findall()方法返回所有匹配项。

"succession-planning“方法不能返回文本上的任何匹配,而不包含设计的短语段(没有这样的子字符串== ==)。

代码语言:javascript
运行
复制
p = re.compile(r'[^\.]*\.[^\.]*succession-planning[^\.]*\.[^\.]*\.')

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

简历: regex不应该被指责没有找到一个文本段,它根本就不存在。

第二个“继承规划”-keyword包含(或不包含)是不依赖于re.findall()方法,而依赖于任务定义需求的严格性,后者声明了re.findall()关键字“。

弱解释( "surrounded“)可能包括这样的情况,即关键字的右侧不是由任何句子连词表示的,而是以拉停符号结束的。

--一个强有力的解释,将限制这样的情况,比如在关键字的两边没有被所包围的。

代码语言:javascript
运行
复制
>>> 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26332138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档