设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 娱乐 站长之家 服务 百度
当前位置: 首页 > 站长百科 > 正文

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

发布时间:2021-01-11 11:45 所属栏目:[站长百科] 来源:网络整理
导读:我需要一个与ABCD_EFG_YYYYMMDD_HH(24)MISS.csv格式的文件名匹配的Oracle正则表达式,除非时间部分是三个特定值之一:110000,140000或180000. 因此,例如,它将匹配文件名ABC_DEF_20120925_110001.csv,但不匹配文件名ABCD_EFG_20120925_110000.csv. 以下非Ora

我需要一个与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!)

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读