所以,我有这两个文件名:
SomeFile_08_20110225153831.txt.gz
ThatOtherFile_15_20110411125902.txt_11.gz
我想做一个正则表达式,它总能在任一文件的文件名中将日期返回到日期。以为这会对它进行排序:
^SomeFile_.*?_([0-9]{8}).*|ThatOtherFile_.*?_([0-9]{8}).*$
目前它只捕获表达式中第一个出现的内容......
最终,我将在Oracle替代排序中使用它:
REGEXP_REPLACE(
file_name,
'^SomeFile_.*?_([0-9]{8}).*|ThatOtherFile_.*?_([0-9]{8}).*$',
'\1')
我现在有一个包含两个独立表达式的案例并且它有效,但是你知道,我希望它更漂亮:)
谢谢!
F。
答案 0 :(得分:8)
^(SomeFile|ThatOtherFile)_.*?_([0-9]{8}).*$
并使用\2
访问日期,或者oracle支持?:
或等效使用它来使第一个群组无法捕获并使用\1
访问日期。
答案 1 :(得分:2)
请尝试使用此正则表达式并验证您是否仍然遇到同样的问题:
^(?:SomeFile|ThatOtherFile)_.*?_([0-9]{8}).*$