db2 正则匹配_在 DB2 for Linux, UNIX, and Windows 9.7 上使用正则表达式和模式匹配的 Java 解决方案...

在 DB2 for Linux, UNIX, and Windows 9.7 上使用正则表达式和模式匹配的 Java 解决方案

Alexandre Grancher

2011 年 3 月 07 日发布

DB2 for Linux, UNIX, and Windows 9.7 和正则表达式

在编程中,正则表达式是用一种形式语言编写的,也称为 regex 或 regexp。它是一种形式模式,一个特定程序使用名为模式匹配 的识别流程在文本或字符串中进行查找。

您可能想使用模式匹配和正则表达式来执行以下基本功能:查看给定的序列是否看起来像给定的模式

如果在序列中具有特定模式,则使用备用子序列替换子序列

在给定输入序列中匹配子序列的特定发生事件

在给定输入序列中匹配子序列的特定发生事件和位置

DB2 for Linux, UNIX, and Windows 本身不支持使用正则表达式函数。如果您遇到一个需要使用正则表达式函数的实例,则您将很可能要创建用户定义的函数来处理您的要求。

本文向您展示了如何编写您自己的 Java 用户定义函数,以便获得 java.util.regex 包所带来的优势,它提供了关于模式匹配的原子特征。该包提供了一个引擎,可以通过解释模式对字符序列执行操作,即模式成为正则表达式的编译表达式。Java 模式与 Unicode 技术标准 #18:Unicode 正则表达式指南 的第 1 级一致,外加 RL2.1 规范相等性。

本文中所讨论的解决方案不支持序列排序、扩展字形集群或调整字形集群。

本文包括以下部分:Java regex 函数,提出了 Java 函数的规范。

匹配模式,描述了可以通过函数的参数 MODE 指定的模式匹配的不同类型。

示例 Java 代码,显示了可以用于实现 regex 函数的 Java 代码,以及 DB2 用户定义函数的相关代码。

启用,解释如何处理可以从本文下载的压缩文件,提供给您可以重新使用的完整示例。

示例 SQL 语句,使用本文中所讨论的 DB2 Java 用户定义函数规定一些 SQL 查询。

Java regex 函数

第一个函数INTEGER REGEXP_LIKE (SOURCE VARCHAR(3000),

REGEX VARCHAR(512),

MODE VARCHAR(3) )

此函数将给定正则表达式编译到具有给定模式的模式中并尝试匹配针对它的给定输入。

参数:source:正则表达式所匹配的输入字符串。

regex:正则表达式。

mode:匹配模式:

CASE_INSENSITVE_MODE

DOTALL_MODE

MULTI_LINE_MODE

返回值:如果源与正则表达式相匹配,则值为 True,否则将返回 false。

指定的模式应该是正确的,否则将返回 false。

如果正则表达式格式不正确,则将返回 false。

如果源字符串是 null 或空,则将返回 0。

第二个函数VARCHAR(3000) REGEXP_REPLACE (SOURCE VARCHAR(3000),

REGEX VARCHAR(512),

REPLACEMENT VARCHAR(3000),

POSITION INTEGER,

OCCURRENCE INTEGER,

MODES VARCHAR(3))

此函数在字符串中搜索给定模式并用新的值替换它们。

参数:source:在其中搜索的字符串。

pattern:搜索的模式。

Replacement:将替换所找到字符串的字符串。

替换字符串可能包含对在之前的匹配中捕获的子序列的引用。

每次出现的 $g 将被评估组的结果替换 (g)。$ 之后的第一个数字始终被视为组引用的一部分。如果它们可建立一个合法的组引用,则随后的数字将被合并到 g 中。只有数字 0 到 9 才被认为是组引用的可能组成部分。例如,如果第二个组与字符串 foo 相匹配,则传递替换字符串 $2bar 将导致 foobar 被附加到字符串缓冲区。

通过在前面加上一个反斜杠 (\$),美元符号 ($) 可以作为一个文字被包括在替换字符串中。

startPosition:在搜索字符串中您希望开始搜索的位置。此值应该大于或等于 1。任何低于 1 的值都将导致此方法返回 null。第一个字符的位置是 1。

occurrence:发生参数指定要替换哪些匹配。0 值意味着替换所有的值。如果指定的数字大于零,则只替换找到的发生项。如果找到的匹配项比要求的少,则不对源进行任何操作。

mode:匹配模式。

返回值:

这是包含被替换值替换了适当正则表达式匹配项的字符串。如果源字符串是 null 或空,则将返回 null。

第三个函数VARCHAR(3000) REGEXP_SUBSTR (SOURCE VARCHAR(3000),

REGEX VARCHAR(512),

POSITION INTEGER,

OCCURRENCE INTEGER,

MODES VARCHAR(3) )

此函数试图匹配并返回正则表达式针对源字符串定义的模式的特定发生项。

参数:source:在其中搜索的字符串。

pattern:搜索的模式。

startPosition:在搜索字符串中您希望开始搜索的位置。此值应该大于或等于 1。任何低于 1 的值都将导致此方法返回 null。第一个字符的位置是 1。

occurrence:发生参数指定要获得哪个

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值