无法识别文件格式_ *

时间:2019-07-25 16:12:07

标签: regex

我需要处理一个文件并且它正在运行,但是我需要更改文件模式。这是需要的:someText_XYZ_*.dat

我添加了星号,以便接受_之后的所有内容,但是不接受具有以下名称的文件:someText_XYZ_abc1.dat

这些模式存储在Oracle表中。当我运行应用程序时,将读取表,并且使用文件模式来匹配文件名(可能在Apache Camel中)。当前有效的示例为:.*.csv[0-9]{7}.abc.*.csv

我的新模式有什么问题?

2 个答案:

答案 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 '\'