Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正则表达式(.NET):如何在中间获得一个组 我想在中间设一个小组。例如: startGOALend=>GOAL GOALend=>目标 目标=>目标_.net_Regex - Fatal编程技术网

正则表达式(.NET):如何在中间获得一个组 我想在中间设一个小组。例如: startGOALend=>GOAL GOALend=>目标 目标=>目标

正则表达式(.NET):如何在中间获得一个组 我想在中间设一个小组。例如: startGOALend=>GOAL GOALend=>目标 目标=>目标,.net,regex,.net,Regex,我正在尝试(开始);(.*)(结束),但它不会产生所需的结果 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 开始 牧羊人 我如何通过正则表达式解决它?您希

我正在尝试
(开始);(.*)(结束)
,但它不会产生所需的结果

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
开始
牧羊人

我如何通过正则表达式解决它?

您希望避免捕获
开始
结束
组。通过将
?:
放在开头,可以避免捕获一对括号的内容

您还需要将中间部分的捕获设置为延迟,这样它就不会将
end
捕获为中间部分的一部分。您可以通过在
*
之后放置
来完成此操作

总之,你会得到:

(?:start)?(.*?)(?:end)?$