繁体   English   中英

正则表达式(.NET):如何在中间找到一个组

[英]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

我如何用正则表达式解决呢?

您要避免捕获startend组。 您可以通过在开头添加?:来避免捕获一对括号的内容。

您还需要使对中间部分的捕获变得懒惰,以使它不会捕获作为中间部分一部分的end 您可以通过放置一个? *

因此,您总共得到:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM