gpt4 book ai didi

python - 非贪婪的 python 正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:59 25 4
gpt4 key购买 nike

我正在尝试使用一些正则表达式;我正在使用 python。

我现在的任务是抓取报纸文章并寻找人们死亡的实例。一旦我有了相关的文章,我就会尝试通过其他一些事情来获取死亡人数。我试图想出一些模式,但我特别难以理解其中一种模式。以这个示例文章部分为例:

SANAA, Oct 21 (Reuters) - Three men thought to be al Qaeda militants were killed in an apparent U.S. drone attack on a car in Yemen on Sunday, tribal sources and local officials said.

我用来获取“三”的代码首先对整个文档进行替换,以便在应用任何模式之前“三”变成“3”。与此示例相关的模式是这样的:

re.compile(r"(\d+)\s(:?men|women|children|people)?.*?(:?were|have been)? killed")

这个想法是这个模式将以数字开头,后跟一个可选名词,例如列出的名词之一,然后在找到“死”或“死”之前有最少的困惑。我想留出空间,以便这种模式能够捕捉到:

3 people have been killed since Sunday

仍然捕获示例中的实例:

3 men thought to be al qaeda militants were killed

问题是我正在使用的模式是从文章的第一部分收集日期,并返回 21 的计数。到目前为止,没有多少摆弄使我能够将范围限制在旁边的数字男人这个词,后面是分词短语,然后是相关的“被杀”。

任何帮助将不胜感激。在 RE 方面,我绝对不是大师。

最佳答案

不要让 men|women|children 可选,即去掉右括号后的问号。正则表达式引擎将在第一个可能的位置进行匹配,无论重复运算符是贪婪还是吝啬。

或者,或者另外,使“这里的任何东西”模式只匹配非数字,即将 .*? 替换为 \D*?

关于python - 非贪婪的 python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13221859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com