我需要找出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);
然后只需访问约束名称的第一个捕获组。