我有以下文件名,并希望在以下后提取数字"_R"
:
\ FileName_R 10 .txt => 10
\ FileName_R_ 10 .txt => 10
我已经成功使用了正则表达式:
_R_?(\d+)\.txt$
现在,我正在寻求使其适应以下变化:
\ FileName_R 10 _1.txt => 10
\ FileName_R_ 10 _1.txt => 10
\ FileName_R 10 _11.txt => 10
我试过了
_R_?(\d+)_?\d+?\.txt$
这似乎适用于后面的例子,但与第一个例子有关.
谢谢.
_R_?(\d+)(_\d+)?.txt$
你遇到的问题是\d+?
使重复变得懒惰而不是使它成为可选的.换句话说,它仍然试图匹配至少一个数字,只是它试图匹配最小数量(而不是最大数量)的数字,以便匹配.
(?:)
:
_R_?(\d+)(?:_\d+)?.txt$
编辑:缺少下划线