2015-11-20 49 views
-1

我是SQL新手,需要查询数据库才能提取某些信息,然后才能将其导入到我熟悉的另一个软件中以分析数据。我试图查询该表有看起来像下面的信息:使用正则表达式提取信息

MV: Gone Girl (2014) 

BT: USD 61,000,000 

CP: Twentieth Century Fox Film Corporation, Regency Entertainment (USA), Inc. 

GR: USD 167,735,396 (USA) (8 February 2015) 

GR: USD 167,590,676 (USA) (25 January 2015) 

GR: USD 37,513,109 (USA) (5 October 2014) 

GR: USD 167,761,501 (USA) 

我想提取与GR启动线的信息,我想将它们组织成四列;

  • 货币,
  • 量,
  • 国家,
  • 日期。

花了很多时间后,我现在把下面的代码放在一起(我知道这不是一个优雅的方式),但它没有抓住最后一行的信息,因为它缺少日期信息。我希望日期列在最后一行是空的,但仍然提取所有其他信息。

regex_match '(?:GR:[ ]([A-Z]{3})[ ](\d{1,3}(?:[,]\d{3})+)[ ][(](USA)[)][ ][(](?:|\d{1,2}[ ]\w+[ ]\d{1,4})){1}','g') 

如果有人能帮我修复我的代码,我将不胜感激。

+0

你应该发布你遇到问题的代码的一个实例。 –

回答

1

这可能你想,即使我不知道这是你所需要的是,至少你问什么:

(?:GR:)([A-Z]{3}) ((?:[0-9]{1,3},*)*) (?:\(([A-Z]{3})\)) *(?:\(([1-9]{1,2} [a-zA-Z]* [0-9]{4})\))* 

您可以检查here看到的结果。

对于每个列,您都有4个组。有时第四个可以是空的(例如,如果没有日期的话)。

+0

非常感谢,它的作品非常漂亮。 – Mohsen

+0

然后接受解决方案。 – naurel