gpt4 book ai didi

regex - 匹配除值列表之外的任何值 - oracle regex

转载 作者:行者123 更新时间:2023-12-01 01:14:49 26 4
gpt4 key购买 nike

我需要一个 Oracle 正则表达式来匹配格式 ABCD_EFG_YYYYMMDD_HH(24)MISS.csv 的文件名,除非时间部分是三个特定值之一: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!)

关于regex - 匹配除值列表之外的任何值 - oracle regex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com