从搜索特定模式的 <> 标签中提取文本

Extract text from <> tags searching a certain pattern

我有这个图案。我想提取 STATUSHISTORY0 模式,它是 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,但它非常复杂。请帮忙。

您可以使用 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

使用@Tim 在他删除的答案中使用的相同正则表达式