此模式取自此处接受的答案:Regex - Extracting volume and chapter numbers from book titles
我去掉了音量/音量匹配,因为我只关心章节#s
正则表达式:(?i)(((?:C|chapter\s+)(\d+)) | (([a-z]+)\s+Chapter\b))
示例文本(粗体匹配):
注意“Blah blah Chapter 2”匹配“blah Chapter”而不是“chapter 2”
我究竟做错了什么?
最佳答案
正则表达式引擎首先从左到右逐个字符地匹配。如果可以在同一位置匹配多个选项,则更改顺序才重要。
如果您想避免使用第二个匹配章节的替代方法,如果后面跟着一个数字,您应该明确说明,例如使用一个负面的前瞻。(?i)(((?:C|chapter\s+)(\d+))|(([a-z]+)\s+Chapter\b(?!\s+\d+)))
这将匹配如下:
Blabla Vol.1 chapter 2 --> chapter 2
ABCD in the era of XYZ volume 2 First Chapter --> First Chapter
Blah blah chapter 2 --> chapter 2
Lablah V6C7 2002 --> C7
FooBar Vol6 C3 by Dr. Foo Bar --> C3
Regex: A tool in Hell V1 Eleventh Chapter --> Eleventh Chapter
关于c# - RegEx 模式仅在第二次交替时匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52122158/