我需要处理一个文件并且它正在运行,但是我需要更改文件模式。这是需要的:someText_XYZ_*.dat
我添加了星号,以便接受_
之后的所有内容,但是不接受具有以下名称的文件:someText_XYZ_abc1.dat
这些模式存储在Oracle表中。当我运行应用程序时,将读取表,并且使用文件模式来匹配文件名(可能在Apache Camel中)。当前有效的示例为:.*.csv
和[0-9]{7}.abc.*.csv
我的新模式有什么问题?
答案 0 :(得分:4)
这是当前有效的一个示例:
[0-9]{7}.abc.*.csv
这似乎是一个正则表达式模式;其中的句点匹配任何字符。如果要使它们与文件名中的实际时间段匹配,则很可能需要对其进行转义(除非处理中所做的事情很奇怪):[0-9]{7}.abc.*\.csv
或[0-9]{7}\.abc.*\.csv
或[0-9]{7}\.abc\..*\.csv
取决于要与之匹配的实际文件名。
您的新模式有someText_XYZ_*.dat
,它将与someText_XYZ
相匹配,后跟任意数量的下划线,后跟任意单个字符,后跟dat
。
您可能想要:
someText_XYZ_.*.dat
或更可能:
someText_XYZ_.*\.dat
匹配someText_XYZ_
(在末尾包含单个下划线),后跟任意数量的任何字符(来自.*
),后跟文字.dat
。
有很多学习正则表达式的资源; here's one,如果您不耐烦,可以使用cheatsheet。
答案 1 :(得分:0)
尝试以下模式:
'someText\_XYZ\_%.dat' ESCAPE '\'