我有这种模式。我想为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,但是它非常复杂。请帮助。
答案 0 :(得分:0)
您可以使用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