impala regex:字符a和b之间的匹配字符串(如果存在b)

gmol1639  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(614)

我试图编写一个正则表达式使用 Impala 匹配字符串之间的两个字符,其中第二个字符可能不存在。例如,我想匹配 @ 性格与性格 . (如果存在点运算符)。
test@mytest.stackoverflow.com->返回mytest
test@mytest->返回mytest
我写了下面的正则表达式,它可以工作,但我认为它肯定可以用一种更干净的方式编写。 regexp_extract(regexp_extract('test @ mytest.stackoverflow.com', '^([^.]*).*', 1), '@(.*?)', 1) -> 我的测试

mwg9r5ms

mwg9r5ms1#

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

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

下面是一个演示,展示了regex本身的运行情况:

演示

相关问题