我有以下文件名,并希望在"_R"
之后提取数字:
我已经成功使用了正则表达式:
_R_?(\d+)\.txt$
现在,我正在考虑使用以下变体进行调整:
我试过
_R_?(\d+)_?\d+?\.txt$
这似乎适用于后面的例子,但与第一个例子有关。
感谢。
答案 0 :(得分:5)
_R_?(\d+)(_\d+)?.txt$
您遇到的问题是\d+?
使重复变得懒惰而不是使其成为可选项。换句话说,它仍然试图匹配至少一个数字,只是它试图匹配最少数量(而不是最大数量)的数字,以便匹配。
<小时/> 编辑:要在不引入捕获组的情况下使用分组,您可以使用
(?:)
:
_R_?(\d+)(?:_\d+)?.txt$
编辑:缺少下划线
答案 1 :(得分:0)
由于\ d不仅限于0-9位数:https://stackoverflow.com/a/6479605/5015529,我使用:_R_?([0-9]+)(?:_[0-9]+)?\.txt$