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 正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章
oracle10g中,如何查询正则表达式匹配指定字符串的匹配个数?