正则表达式无法解析最后一组[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式无法解析最后一组[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
这是考验。我希望最后一组是".png"
,但这种模式会返回""
。
var inputStr = @"C:path odir[yyyy-MM-dd_HH-mm].png";
var pattern = @"(.*?)[(.*?)](.*?)";
var regex = new Regex(pattern);
var match = regex.Match(inputStr);
var thirdGroupValue = match.Groups[3].Value;
// ✓ EXPECTED: ".png"
// ✗ CURRENT: ""
第1和第2组工作正常。
答案
这是因为你让第3组懒惰的*
:
(.*?)[(.*?)](.*?)
^
here
这意味着它将尽可能少地匹配。什么是.*
可以匹配的最少?空字符串!
你可以了解更多关于lazy vs greedy here的信息。
您可以通过删除?
,使其变得贪婪或在最后放置$
来解决这个问题,并告诉它匹配到字符串的结尾:
(.*?)[(.*?)](.*)
要么
(.*?)[(.*?)](.*?)$
以上是关于正则表达式无法解析最后一组[重复]的主要内容,如果未能解决你的问题,请参考以下文章