捕获不在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