繁体   English   中英

正则表达式以匹配文件路径字符串的数字结尾

[英]Regex to match number end of file path string

我有以下文件名,并希望提取"_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$

编辑:缺少下划线

由于\\ d不仅限于0-9位数字: https : _R_?([0-9]+)(?:_[0-9]+)?\\.txt$ ,我将使用: _R_?([0-9]+)(?:_[0-9]+)?\\.txt$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM