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

时间:2016-03-23 06:58:08

标签: 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])

然而,上面的内容也接受了&#34; 978&#34;,&#34; 133&#34;,&#34; 803&#34;等等进入TrackNumber组(例1和2)。

如何更改上述正则表达式以仅选择&#34; 001&#34;进入TrackNumber?

-Alan -

1 个答案:

答案 0 :(得分:3)

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

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

Demo