正则表达式函数

正则表达式函数可识别精确的字符模式,用于数据验证,例如类型检查、范围检查和不允许字符的检查。 支持的正则表达式函数与Perl v5完全兼容。

对正则表达式操作方法的描述超出了本文档的范围。 有关信息,请参阅许多介绍如何构建Perl正则表达式的文章。

正则表达式函数对输入值的各个部分递归应用 regexp 模式,直到出现以下条件之一:
  • 找到匹配。 函数返回匹配值。
  • 如果在当前位置未找到匹配的模式,函数将使用模式的另一部分重复搜索过程。

函数重复执行新搜索模式的次数是有限制的。 在IBM®SQL 扩展工具包 1.3版及更高版本中,递归次数限制为 10,000,000 次,这是公认的默认值。 (在以前的版本中,默认上限为 10,000) 如果在找到匹配结果之前已达到限制,函数会显示错误信息ERROR: 0 : Regex exec: Match limit reached, consider rewriting the pattern.

递归限制并不限制输入搜索字符串;它控制的是匹配 "极端 "模式(如嵌套的无限模式)所花费的精力。 请考虑以下示例:
https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(?\S+)))
粗体高亮显示的模式会导致搜索匹配一个或多个出现的(一个或多个出现的字母数字)。 这种模式会导致不必要的递归,在输入中等或较大的字符串时,递归会很快达到极限。 更好的办法是将搜索模式改为更有效的形式,如下所示:
https?://([-\w\.]+)(:\d+)?(/([\w/_\.]*(?\S+)))