Regex以匹配文件路径字符串的数字结尾

本文关键字:字符串 数字 结尾 路径 文件 Regex | 更新日期: 2023-09-27 18:28:52

我有以下文件名,并且希望提取"_R":之后的数字

  • ''文件名_R10.txt=>10
  • ''文件名_R_10.txt=>10

我已经成功地使用了regex:

_R_?('d+)'.txt$

现在,我希望将其调整为使用以下变体:

  • ''文件名_R10_1.txt=>10
  • ''文件名_R_10_1.txt=>10
  • ''文件名_R10_11.text=>10

我试过

_R_?('d+)_?'d+?'.txt$

这似乎适用于后面的例子,但与前面的例子不同。

谢谢。

Regex以匹配文件路径字符串的数字结尾

_R_?('d+)(_'d+)?.txt$

您遇到的问题是'd+?使重复变得懒惰,而不是可选的。换句话说,它仍然试图匹配至少一个数字,只是试图匹配最小数量(而不是最大数量)的数字才能匹配。


EDIT:要在不引入捕获组的情况下使用分组,可以使用(?:):

_R_?('d+)(?:_'d+)?.txt$

编辑:缺少下划线

As''d不限于0-9位数字:https://stackoverflow.com/a/6479605/5015529,我会使用:_R_?([0-9]+)(?:_[0-9]+)?'.txt$