如何删除所有内容但正则表达式

时间:2017-07-15 21:00:10

标签: r regex

我正试图将反ISIS空袭的几千个新闻稿变成有组织的数据集。到目前为止,我已经有一个工作代码可以一次执行一个,但是由于每N个(不断变化的)个案数量的方式有一个日期,所以它会因多个操作而窒息。

使用((?<=SOUTHWEST ASIA,).*(?<=-))((?<=Near).*?(?=airstrik))我可以单独匹配我需要的两件事,但我无法弄清楚如何设置它以保留与这些正则表达式匹配的所有字符串,同时删除其他所有字符串

我已经尝试了((?<=SOUTHWEST ASIA,).*(?<=-))|((?<=Near).*?(?=airstrik))((?<=SOUTHWEST ASIA,).*(?<=-)).*((?<=Near).*?(?=airstrik)),但这两个人最终都会匹配文档中的所有内容。

我正在尝试做的是获取整个文档并删除除匹配字符串之外的所有内容,以便我从中继续:

  

2016年11月23日   军事打击继续袭击叙利亚和伊拉克的伊黎伊斯兰国恐怖分子   美国中央司令部

     

西南亚,2016年11月23日 - 11月22日,联军军队对叙利亚和伊拉克的伊黎伊斯兰国恐怖分子进行了17次罢工。在叙利亚,联军军队使用攻击,轰炸机,战斗机和遥控飞机对伊黎伊斯兰国的目标进行了11次罢工。此外,在伊拉克,联军军队使用攻击,轰炸机,战斗机和遥控飞机与伊黎伊斯兰国目标协调并支持伊拉克政府进行六次罢工。

     

以下是自上次新闻稿以来进行的罢工摘要:

     

叙利亚

     
      
  • 在Abu Kamal附近,一次罢工摧毁了一个石油钻井平台。

  •   
  • 在Ar Raqqah附近,四次袭击事件涉及伊黎伊斯兰国的一个战术部队,摧毁了两辆车,一辆油罐车,一辆油泵和一辆VBIED,并损坏了一条道路。

  •   
     

伊拉克

     
      
  • 在拉瓦附近,一次罢工使伊黎伊斯兰国的一个战术部队摧毁了一辆车,一个迫击炮系统和一个武器库。

  •   
  • 在摩苏尔附近,四次袭击事件涉及三个伊黎伊斯兰国战术部队,摧毁了六个伊黎伊斯兰国控制的建筑物,一个迫击炮系统,一辆汽车,一个武器库,一个供应缓存和一个炮兵系统,并损坏了五个供应系统路线和桥梁。

  •   
     

我不需要的更多文字,大约5个例外,他们修改以前的报告,我只是手工修复,然后是下一个报告

对此:

SOUTHWEST ASIA, November 23, 2016
Near Abu Kamal, one strike
Near Ar Raqqah, four strikes
Near Rawah, one strike
Near Mosul, four strikes
SOUTHWEST ASIA, November 22, 2016
Near Abu Kamal, one strike
Near Ar Raqqah, four strikes
Near Rawah, one strike
Near Mosul, four strikes

我可以单独匹配并拉出日期和城市/罢工,但这对我的目的不起作用,所以我需要找到一种方法来清理源文档,使其看起来像上面那样。

1 个答案:

答案 0 :(得分:-1)

您可以使用str_extract_all包中的stringr功能,并将其传递给您的正则表达式。

我认为如果你传递了两个正则表达式并将它们与|分开,那么它应该可行。如果您需要测试正则表达式,可以转到:https://regex101.com/

最佳, 科林