Извлечение текста из тегов <> в поисках определенного шаблона - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть этот шаблон.Я хочу извлечь шаблон HISTORY0 для STATUS, его значение WAS (в теге <SINGLE>) и значение IS (в теге <MARRIED>) и выделить в новые столбцы:

HISTORY0:<NAME>WAS<ABC>IS<XYZ>
HISTORY1:<NOMBRE>WAS<ABC>IS<XYZ>HISTORY0:<ID>WAS<123>IS<456>
HISTORY1:<ID>WAS<123>IS<456>HISTORY0:<STATUS>WAS<SINGLE>IS<MARRIED>
HISTORY1:<ESTADO>WAS<SOLTERO>IS<CASADO>

Я пытался использовать REGEX, но это очень сложно .. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете использовать RegExp_Substr:

RegExp_Substr(col, '(?<=HISTORY0:<STATUS>WAS<)[^>]+',1,1,'i')       -- WAS
RegExp_Substr(col, 'HISTORY0:<STATUS>WAS<(\w+)>IS<\K[^>]+',1,1,'i') -- IS

"(?<=.....)" is a lookbehind (without adding it to the result)
"\K" means, forget the match up to here

Но немного проще с недокументированным

RegExp_Substr_gpl(col, 'HISTORY0:<STATUS>WAS<(\w+)>IS<(\w+)>',1,1,'i', 1) -- WAS
RegExp_Substr_gpl(col, 'HISTORY0:<STATUS>WAS<(\w+)>IS<(\w+)>',1,1,'i', 2) -- IS

Используя тот же RegEx, который @Tim имел в своем удаленном ответе

...