从搜索特定模式的 <> 标签中提取文本
Extract text from <> tags searching a certain pattern
我有这个图案。我想提取 STATUS
的 HISTORY0
模式,它是 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 在他删除的答案中使用的相同正则表达式
我有这个图案。我想提取 STATUS
的 HISTORY0
模式,它是 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 在他删除的答案中使用的相同正则表达式