Impala正则表达式:匹配字符a和b之间的字符串(如果b存在)

时间:2018-11-06 14:52:10

标签: regex impala

我正在尝试使用Impala编写正则表达式以匹配两个字符之间可能不存在第二个字符的字符串。例如,我想匹配@字符和.之间的所有字符(如果存在点运算符)。

  • test @ mytest.stackoverflow.com->返回 mytest
  • test @ mytest->返回 mytest

我编写了以下正则表达式,并且可以使用,但是我认为绝对可以用一种更简洁的方式编写。

regexp_extract(regexp_extract('test @ mytest.stackoverflow.com', '^([^.]*).*', 1), '@(.*?)', 1) -> 我的测试

1 个答案:

答案 0 :(得分:0)

尝试使用以下模式,将想要匹配的文本放置在捕获组中:

@([^.]*)[.]?

SELECT
    REGEXP_EXTRACT('test @ mytest.stackoverflow.com', '@([^.]*)[.]?', 1) AS result
FROM yourTable;

以下是演示正则表达式在运行中的演示:

Demo