用于查找约束名称的 sql 异常的正则表达式



我需要找出java中外键或唯一键的sql异常的约束名称。

异常消息可能是:

ORA-02292:完整性约束(BB08.FK1_STUDENT_UNDER_REGISTRATION( 违反

ORA-00001:唯一约束 (BAO4_OWN。PK2_JBPM_LOG( 违反

ORA-00001:唯一约束(可弯曲。PK_C0054150( 违反

我需要获取可以找到与 FK/PK2/PK 匹配的完整字符串的正则表达式,例如此处的 FK1_STUDENT_UNDER_REGISTRATION、PK2_JBPM_LOG PK_C0054150。约束名称没有长度限制。

使用正则表达式,我试图找到一个正则表达式作为(FK|fk)w*但这不起作用并且无法编译。

尝试使用以下正则表达式模式:

bconstraint (([^)]+))

示例脚本:

var input = "ORA-02292: integrity constraint (BB08.FK1_STUDENT_UNDER_REGISTRATION) violatednORA-00001: unique constraint (BAO4_OWN.PK2_JBPM_LOG) violatednORA-00001: unique constraint (CRUCIBLE.PK_C0054150) violated";
var regexp = /bconstraint (([^)]+))/ig;
match = regexp.exec(input);
while (match != null) {
console.log(match[1])
match = regexp.exec(input);
}

顺便说一下,如果您使用的是支持matchAll()的最新版本的JavaScript,那么更简单的方法是:

var input = "ORA-02292: integrity constraint (BB08.FK1_STUDENT_UNDER_REGISTRATION) violatednORA-00001: unique constraint (BAO4_OWN.PK2_JBPM_LOG) violatednORA-00001: unique constraint (CRUCIBLE.PK_C0054150) violated";
var matches = input.matchAll(/bconstraint (([^)]+))/ig);

然后只需访问约束名称的第一个捕获组。

最新更新