我想在中间找一个小组。例如:
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
我怎么能用正则表达式来解决它?
答案 0 :(得分:2)
您希望避免捕获start
和end
群组。您可以通过将?:
放在开头来避免捕获一对括号的内容。
你还需要使中间部分的捕获变得懒惰,以便它不会捕获end
作为中间部分的一部分。您可以在?
之后添加*
。
总而言之,你得到:
(?:start)?(.*?)(?:end)?$