我正在尝试学习一些正则表达式,使用的是Python。
我现在的任务是爬取报纸文章并查找人们死亡的情况。当我找到相关文章后,我会尝试获取一些其他信息的死亡计数。我正在努力想出一些模式,但有一个特别困难。看看这篇文章节选:
据部落消息和当地官员称,10月21日(星期天),美国无人机袭击也门一辆汽车,疑似击毙了三名基地组织武装分子。
我用来获取“三”的代码替换了整个文档,因此在应用任何模式之前,“三”就变成了“3”。与此示例相关的模式如下所示:
并且仍然可以在示例中捕获该实例:
问题在于我使用的模式从文章的第一部分收集日期,并返回计数21。到目前为止,无论我如何摆弄都不能使范围限制在单词“男人”旁边的数字上,其后是动词短语,然后是相关的“被杀害”。如果能有所帮助,我会非常感激。对于正则表达式方面我并不精通。
我现在的任务是爬取报纸文章并查找人们死亡的情况。当我找到相关文章后,我会尝试获取一些其他信息的死亡计数。我正在努力想出一些模式,但有一个特别困难。看看这篇文章节选:
据部落消息和当地官员称,10月21日(星期天),美国无人机袭击也门一辆汽车,疑似击毙了三名基地组织武装分子。
我用来获取“三”的代码替换了整个文档,因此在应用任何模式之前,“三”就变成了“3”。与此示例相关的模式如下所示:
re.compile(r"(\d+)\s(:?men|women|children|people)?.*?(:?were|have been)? killed")
这个模式的想法是以数字开头,后面跟着可选的名词,例如列出的其中一个名词,然后在找到“dead”或“died”之前有最少的杂乱内容。我希望留出空间,使得这个模式可以匹配:
3 people have been killed since Sunday
并且仍然可以在示例中捕获该实例:
3 men thought to be al qaeda militants were killed
问题在于我使用的模式从文章的第一部分收集日期,并返回计数21。到目前为止,无论我如何摆弄都不能使范围限制在单词“男人”旁边的数字上,其后是动词短语,然后是相关的“被杀害”。如果能有所帮助,我会非常感激。对于正则表达式方面我并不精通。