替换模式之间的空格<>

时间:2019-06-21 16:11:37

标签: regex hive

我需要解析XML标签。但是一些标签显示为空白,如下所示。

所以基本上我想使用正则表达式删除XML标记内的空白字符。

<Employee   >< Name>ABC</Name><Age>21</Age  ></Employee>

在Employee的标签中,名称和年龄空间出现在标签的前面或后面,但位于<>之间。

所以基本上我想得到这样的输出。

<Employee><Name>ABC</Name><Age>21</Age></Employee>

注意:<>之间的空格可以是多个而不是单个出现。

请为此提供正则表达式帮助我。

谢谢。

1 个答案:

答案 0 :(得分:2)

例如,可能捕获我们不需要的空间的表达式类似于:

<\s*(\/)?\s*(\S+?)\s*>

,我们也许可以替换为:<$1$2>

Please see the demo here.

编辑:

<\s*(\/)?\s*(\S+?)\s*(\/)?>

,我们的代码可能类似于:

regexp_replace(str,'<\\s*(\\/)?\\s*(\\S+?)\\s*(\\/)?>','<$1$2$3>')

Demo

建议

leftjoin建议:

  

对于Hive使用双反斜杠,它可以正常工作:

regexp_replace(str,'<\\s*(\\/)?\\s*(\\S+?)\\s*>','<$1$2>')