使用正则表达式

时间:2015-11-20 10:57:27

标签: regex

我是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开头的行中的信息,我想将它们组织成四列;

  • currency,
  • 金额,
  • country,
  • 日期。

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

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

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

1 个答案:

答案 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个组。有时第四个可以是空的(例如,如果没有日期)。