正则表达式中的替代捕获组?

fil*_*ppo 3 regex string

所以,我有这两个文件名:

SomeFile_08_20110225153831.txt.gz
ThatOtherFile_15_20110411125902.txt_11.gz
Run Code Online (Sandbox Code Playgroud)

我想做一个正则表达式,它总能在任一文件的文件名中将日期返回到日期.以为这会对它进行排序:

^SomeFile_.*?_([0-9]{8}).*|ThatOtherFile_.*?_([0-9]{8}).*$
Run Code Online (Sandbox Code Playgroud)

(在RegExr中查看)

目前它只捕获表达式中的第一个...

最后,我将在Oracle替换中使用它:

REGEXP_REPLACE(
    file_name,
    '^SomeFile_.*?_([0-9]{8}).*|ThatOtherFile_.*?_([0-9]{8}).*$',
    '\1')
Run Code Online (Sandbox Code Playgroud)

我现在有两个分开的表达式,它可以工作,但你知道,我希望它更漂亮:)

谢谢!

F.

nob*_*ody 8

^(SomeFile|ThatOtherFile)_.*?_([0-9]{8}).*$
Run Code Online (Sandbox Code Playgroud)

并使用\2,或者如果oracle支持?:或等效使用它来使第一组不捕获并访问日期\1.