2015-11-20 4 views
-1

Я новичок в SQL и вам нужно запросить базу данных для извлечения определенной информации, прежде чем я могу импортировать ее в другое программное обеспечение, с которым я знаком, для анализа данных. В таблице Я пытаюсь запроса содержит информацию, которая выглядит, как показано ниже:Извлечение информации с использованием regex

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

Смежные вопросы