捕获不在Regex中工作的组

使用正则表达式,我想匹配以下字符串:

January 25
Jan 25

我分别捕获月份和日期部分,但如果有完整的月份名称,只想返回月份名称的前3个字符,所以我对字符“uary”使用非捕获组(?:)

(?<M>(Jan(?:uary)?)) (?<D>dd)

不幸的是, M组总是返回完整的月份名称; 即它也捕获非捕获组。

我已打开ExplicitCapture标志。 我已经使用RegExBuilder和Rad Software的正则表达式设计器来确保它不是因为该工具。


您的捕捉组应仅包围Jan

(?<M>Jan)(?:uary)? (?<D>d{1,2})

您的原始表达式大致相当于(?<M>January|Jan) (?<D>dd) 。 非捕获组并不意味着将匹配从现有捕获组中移除。 这意味着只有没有创建新的捕获组。


尝试:

(?<M>Jan)(?:uary)? (?<D>dd)
链接地址: http://www.djcxy.com/p/12973.html

上一篇: capturing group not working in Regex

下一篇: Regex atomic grouping not greedy enough