Regex使用或同时使用Hive、Regex\u substr根据多个子字符串检查字符串

Regex使用或同时使用Hive、Regex\u substr根据多个子字符串检查字符串,regex,string,hive,Regex,String,Hive,我正在尝试获取正则表达式,它将在字符串中搜索列表中的一个子字符串并返回它。 示例:提取{'foo','bar','one','two','ten}的子字符串列表。如果在此列表中找到两个或更多,我只需要找到第一个 jhgdjch_foo_hgfv -> foo jhgjhs_bar_fkfj -> bar kjhd_ten_67_bar -> ten 我将在Hive中的regexp_extract()中使用它。我想知道是否可以在正则表达式中指定或。是

我正在尝试获取正则表达式,它将在字符串中搜索列表中的一个子字符串并返回它。 示例:提取{'foo','bar','one','two','ten}的子字符串列表。如果在此列表中找到两个或更多,我只需要找到第一个

    jhgdjch_foo_hgfv -> foo 
    jhgjhs_bar_fkfj -> bar 
    kjhd_ten_67_bar -> ten

我将在Hive中的regexp_extract()中使用它。我想知道是否可以在正则表达式中指定或。是的,您可以进行替换

/(foo|bar|ten)/
如果你想找那些词,你可以这样做:

/\w+_(foo|bar|ten)_\w+/

你有学习正则表达式的教程吗?如果没有,这将是一个很好的举措,因为这是一个非常基本的问题。

为什么不在
\u
上拆分字符串,然后迭代子字符串数组并筛选新拆分的字符串数组,以查找每个子字符串的可能匹配项?谢谢!!我没有“\u”字符,只是为了强调我要查找的子字符串。regexp\u extract()使用Java正则表达式,请参阅。在Hive中为regexp提供一个提示;如果您的模式包含分号(;),请确保使用反斜杠转义,否则配置单元将看到它并将其视为命令结束。