替代品上的正则表达式量词(垂直条"|")



例如,如果字符串启动和/或以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]

导致

相关内容

  • 没有找到相关文章

最新更新