导致
例如,如果字符串启动和/或以foo或bar结束,则要修剪字符串,并希望将内部字符串获取在Regex组中。
例如
" footestbar"应该是"测试",
" test2bar"应该为" test2"
和" test3"应该为" test3"。
我当前的正则是:
^(foo|bar)?(.*)(foo|bar)?$
但这不起作用,因为我不能将量词?
应用于替代组((foo|bar)
)。
我的代码
static string returnMatch(string text){
string pattern = @"^(foo|bar)?(.*)(foo|bar)?$";
return System.Text.RegularExpressions.Regex.Match(text, pattern).Groups[2].Value;
}
任何帮助将不胜感激。
您可以使用此
^(?:foo|bar)?(.*?)(?:foo|bar)?$
您现在可以这样匹配。
return Regex.Match(input,"^(?:foo|bar)?(.*?)(?:foo|bar)?$").Groups[1].Value;
我建议您与
一起去(?:^|(?<=^foo)).*?(?=bar$|$)
或,如果要在开始和结尾允许foo
和/或bar
,则使用
(?:^|(?<=^foo)|(?<=^bar)).*?(?=foo$|bar$|$)
有Groups[0]