【问题标题】:Regex syntax in teradatateradata 中的正则表达式语法
【发布时间】:2016-10-08 09:08:56
【问题描述】:

REGEXP_REPLACEREGEXP_SIMILAR 等函数中,我们需要提及匹配字符串一部分的正则表达式。正则表达式是否遵循与 java 中的正则表达式相同的语法,或者 Teradata 是否有单独的正则表达式语法?

【问题讨论】:

  • 根据我的经验,情况是一样的。
  • Afaik 它基于 Perl 兼容正则表达式pcre.org
  • @dnoeth afaik 在 teradata 文档中没有提到它遵循哪种 reg ex 语法。你能指点我在哪里可以找到它吗?
  • 嗯,PCRE 语法是最常用的语法

标签: regex teradata


【解决方案1】:

与 PCRE 相同(C、Java、PHP、Javascript)。

例如,假设您有一堆电子邮件,而您只想要您将使用的网络域

SELECT RegExp_Replace(email, '^.*@(.*)', '\1', 1, 0, 'i') FROM emails;

您甚至可以使用以下命令将 http:// 添加到开头:

SELECT RegExp_Replace(email, '^.*@(.*)', 'http://\1', 1, 0, 'i') FROM emails;

【讨论】:

    【解决方案2】:

    我有同样的问题,由于没有令人满意的答案开始调查。根据 Teradata 员工的this 支持论坛回答,它是POSIX Extended Regular Expressions (ERE) 风格。

    我试图找出 TD14.10 使用的是什么标准,但我发现它是 ANSI SQL 2008 兼容。我发现它必须是 POSIX 标准 埃雷。

    我检查了其他供应商 (Oracle),他们有一些 POSIX-ERE PCRE 扩展。 [:word:] 是 POSIX 非标准的,但有些 正则表达式的实现正在理解它。

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 2019-03-04
      • 2018-08-02
      • 2021-06-09
      • 2012-05-06
      • 2017-08-09
      • 2018-01-30
      • 2020-09-10
      • 1970-01-01
      相关资源
      最近更新 更多