我有以下文件名,并希望在 "_R"
之后提取数字:
- \FileName_R10.txt => 10
- \FileName_R_10.txt => 10
我已经成功使用了正则表达式:
_R_?(\d+)\.txt$
现在,我希望对其进行调整以适应以下变体:
- \FileName_R10_1.txt => 10
- \FileName_R_10_1.txt => 10
- \FileName_R10_11.txt => 10
我试过了
_R_?(\d+)_?\d+?\.txt$
这似乎适用于后面的例子,但与第一个例子不符。
谢谢。
最佳答案
_R_?(\d+)(_\d+)?.txt$
您遇到的问题是 \d+?
使重复变得懒惰而不是使其成为可选的。换句话说,它仍然试图匹配至少一位数字,只是它试图匹配最少数量(而不是最大数量)的数字才能匹配。
编辑:要在不引入捕获组的情况下使用分组,您可以使用
(?:)
:
_R_?(\d+)(?:_\d+)?.txt$
编辑:缺少下划线
关于c# - 正则表达式匹配文件路径字符串的数字结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34596963/