4

時間部分が、、、またはの3つの特定の値のいずれかである場合をABCD_EFG_YYYYMMDD_HH(24)MISS.csv除い、形式のファイル名と一致するOracle正規表現が必要です。110000140000180000

したがって、たとえば、ファイル名と一致しますが、ファイル名は一致しABC_DEF_20120925_110001.csvませABCD_EFG_20120925_110000.csvん。

次のOracle以外の正規表現は機能します。

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

しかし、Oracle正規表現として記述する方法がわかりません。

4

1 に答える 1

4

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!)
于 2012-10-02T14:51:43.113 に答える