2015-11-20 50 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