我想修剪一个字符串,如果它开始和/或以foo或bar结尾,并且想要在正则表达式组中获取内部字符串。
例如
“fooTestbar”应为“Test”,“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;
}
非常感谢任何帮助。
答案 0 :(得分:1)
您可以使用此
^(?:foo|bar)?(.*?)(?:foo|bar)?$
您现在可以像这样匹配..
return Regex.Match(input,"^(?:foo|bar)?(.*?)(?:foo|bar)?$").Groups[1].Value;
答案 1 :(得分:1)
我建议你一起去
(?:^|(?<=^foo)).*?(?=bar$|$)
或者,如果您想在开头和结尾都允许foo
和/或bar
,那么
(?:^|(?<=^foo)|(?<=^bar)).*?(?=foo$|bar$|$)
结果为Groups[0]