[英]Regular expression (.NET): how to get a group in the middle
我想在中间找一个小组。 例如:
startGOALend => GOAL
GOALend => GOAL
GOAL => GOAL
我正在尝试(start)?(.*)(end)?
,但不会导致所需的结果。
var regex = new Regex("(start)?(.*)(end)?");
if (text == null) return;
var match = regex.Match(text);
foreach (var group in match.Groups)
{
Console.Out.WriteLine(group);
}
它返回:
startGOALend
start
GOALend
我如何用正则表达式解决呢?
您要避免捕获start
和end
组。 您可以通过在开头添加?:
来避免捕获一对括号的内容。
您还需要使对中间部分的捕获变得懒惰,以使它不会捕获作为中间部分一部分的end
。 您可以通过放置一个?
在*
。
因此,您总共得到:
(?:start)?(.*?)(?:end)?$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.