Регулярное выражение

Необходимо написать регулярное выражение + код (или псевдокод) для извлечения нужных значений.

Текст:
Karta *0123: Pokupka 1000 RUB data 21.08.2015 12:12:12 mesto Starbucks
Значения:

  • Номер карты
  • Сумма транзакции
  • Валюта транзакции
  • Дата транзакции
  • Время транзакции
  • Место совершения транзакции

Воспольуемся функционалом, который предоставляет Oracle для работы с регулярными выражениями(REGEXP).
Извлекаем необходимые данные:

WITH w AS
 (SELECT 'Karta' AS literal
    FROM dual
  UNION ALL
  SELECT 'Pokupka'
    FROM dual
  UNION ALL
  SELECT 'data'
    FROM dual
  UNION ALL
  SELECT 'mesto'
    FROM dual)
      SELECT t.str
        FROM (SELECT regexp_substr(str, '[^ ]+', 1, level) str
                FROM (SELECT 'Karta *0123: Pokupka 1000 RUB data 21.08.2015 12:12:12 mesto Starbucks' str FROM dual) str
              CONNECT BY regexp_instr(str, ' ', 1, level - 1) > 0) t minus select w.literal from w;
/

Результат:

"STR"
"*0123:"
"1000"
"12:12:12"
"21.08.2015"
"RUB"
"Starbucks"

Вариант на C#:

using System;

namespace ConsoleAppRegex
{
    class Program
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="args"></param>
        /// 
        static void Main(string[] args)
        {
            string s = "Karta *0123: Pokupka 1000 RUB data 21.08.2015 12:12:12 mesto Starbucks";

            string[] strarr = s.Split(new string[] { "Karta", "Pokupka", "data", "mesto" }, StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < strarr.Length; i++)
            {
                if (i == 1)
                {
                    string[] array = strarr[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                    for (int j = 0; j < array.Length; j++)
                    {
                        Console.WriteLine(array[j].Trim());
                    }

                }
                else
                    Console.WriteLine(strarr[i].Trim().TrimEnd(':'));
            }
        }
    }
}

P.S.
Конфигурация СУБД — Oracle Database 11g Express Edition Release 11.2.0.2.0
IDE — PL/SQL Developer Version 11.0.6.1776

Tags: , , ,

Leave a Reply

You must be logged in to post a comment.