匹配除值列表之外的任何值 – oracle正则表达式

匹配除值列表之外的任何值 – oracle正则表达式,第1张

概述我需要一个与ABCD_EFG_YYYYMMDD_HH(24)MISS.csv格式的文件名匹配的Oracle正则表达式,除非时间部分是三个特定值之一:110000,140000或180000. 因此,例如,它将匹配文件名ABC_DEF_20120925_110001.csv,但不匹配文件名ABCD_EFG_20120925_110000.csv. 以下非Oracle正则表达式有效: ^ABCD_EF 我需要一个与ABCD_EFG_YYYYMMDD_HH(24)MISS.csv格式的文件名匹配的Oracle正则表达式,除非时间部分是三个特定值之一:110000,140000或180000.

因此,例如,它将匹配文件名ABC_DEF_20120925_110001.csv,但不匹配文件名ABCD_EFG_20120925_110000.csv.

以下非Oracle正则表达式有效:

^ABCD_EFG_[0-9]*_(?!110000|140000|180000)[0-9]*\.csv$

但我不知道如何把它写成Oracle正则表达式.

解决方法 Oracle不支持超前断言,因此您必须拼出所有有效匹配:

^ABCD_EFG_[0-9]*_([02-9]|1[0235679]|1[148]0{0,3}[1-9])[0-9]*\.csv$

应该工作(假设时间部分总是6位数).

说明:

ABCD_EFG_    # Match ABCD_EFG_[0-9]*_      # Match first number (date part) and _(            # Match a number that starts with [02-9]      # 0 or 2-9|            # or 1[0235679]  # 1,followed by 2,3,5,6,7,or 9|            # or 1[148]      # 11,14,or 18 0{0,3}      # followed by up to three zeroes [1-9]       # but then one digit 1-9)            # End of alternation[0-9]*       # Fill the rest with any digits\.csv        # Match .csv (mind the backslash!)
总结

以上是内存溢出为你收集整理的匹配除值列表之外的任何值 – oracle正则表达式全部内容,希望文章能够帮你解决匹配除值列表之外的任何值 – oracle正则表达式所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1162912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存