Oracle 正则表达式匹配

Posted

技术标签:

【中文标题】Oracle 正则表达式匹配【英文标题】:Oracle RegEx Matching 【发布时间】:2018-09-12 13:16:55 【问题描述】:

在 where 子句中具有 REGEXP_LIKE 的 Oracle 选择语句随机失败,并出现错误 ORA-12726:正则表达式中的括号不匹配。当我重新运行查询时,它工作得很好。我已经验证了数据库中的所有正则表达式,并且在语法上都是正确的。任何想法为什么它失败以及为什么它在我重新运行查询时返回结果。

 SELECT
     r.*
 FROM
     routeuser.ahc_b2b_route r
 WHERE
     r.producer ='Facets'
     AND REGEXP_LIKE ('PCP2AAME.2A.zip.end', r.filemask, 'i' )
     ORDER BY
     length(r.filemask) DESC, r.filemask DESC

结果:

Resulting RegEx ^PCP(37|41|47|57|2A)(AME|KEY)[.](37|41|47|57|2A)[.]zip.end$

感谢任何帮助。

【问题讨论】:

【参考方案1】:

我相信您正在使用[.] 来获取文字点?尝试使用 \. 转义,看看您的问题是否消失。

^PCP(37|41|47|57|2A)(AME|KEY)\.(37|41|47|57|2A)\.zip\.end$

【讨论】:

谢谢你会试试的。测试了您建议的新版本,它确实有效。

以上是关于Oracle 正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章

oracle SQL 正则表达式

oracle10g中,如何查询正则表达式匹配指定字符串的匹配个数?

oracle10g中,如何查询正则表达式匹配指定字符串的匹配个数?

oracle 正则表达式?=

oracle 正则表达式?=

oracle 正则表达式