从字符串中选择确切的数字匹配

Ala*_*n B 5 c# regex

我有如下输入字符串

1)ISBN_9781338034424_001_S_r1.mp3

2)001_Ch001_987373737.mp3

3)这是测试001 Chap01.mp3

4)Anger_Cha01_001.mp3

我使用下面的正则表达式选择"001"进入TrackNumber组

(?:(?<TrackNumber>\d{3})|(?<Revision>r\d{1}))(?![a-zA-Z])
Run Code Online (Sandbox Code Playgroud)

然而,上面还将"978","133","803"等拾入TrackNumber组(例1和2).

如何更改上述正则表达式以仅将"001"选为TrackNumber?

-Alan-

Kei*_*all 3

以下正则表达式将匹配所有示例中的 3 位曲目编号:

(?<=\b|_)(?<TrackNumber>\d{3})(?=\b|_)
Run Code Online (Sandbox Code Playgroud)
  • (?<=\b|_)正向后看,前一个字符是单词边界(即空格)或下划线
  • (?=\b|_)正向前视,下一个字符是单词边界(即空格)或下划线

演示