如何使用regex.Matches
输入字符串
string strQuery = "BO_WEEKOFF_MASTER.year, week_off_day=case when "+
"BO_WEEKOFF_MASTER.week_off_day ='1' then 'Sunday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='2' then 'Monday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='3' then 'Tuesday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='4' then 'Wednesday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='5' then 'Thursday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='6' then 'Friday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='7' then 'Saturday' "+
"else '' end,"+
"BO_WEEKOFF_MASTER.year, week_off_day=case when "+
"BO_WEEKOFF_MASTER.week_off_day ='1' then 'Sunday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='2' then 'Monday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='3' then 'Tuesday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='4' then 'Wednesday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='5' then 'Thursday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='6' then 'Friday' "+
"when BO_WEEKOFF_MASTER.week_off_day ='7' then 'Saturday' "+
"else '' end,";
我的模式是
MatchCollection words = Regex.Matches(strQuery, @"(?i)?<firstMatch>.*,) (?<secondMatch>[^=]*)=case(?<thirdMatch>.*end\b)");
foreach (Match word in words)
{
strQuery = Regex.Replace(word , @"....", @" ... ", RegexOptions.IgnoreCase);
}
问题是它只匹配一次
我需要输出如下
BO_WEEKOFF_MASTER.year,
case
when BO_WEEKOFF_MASTER.week_off_day ='1' then 'Sunday'
when BO_WEEKOFF_MASTER.week_off_day ='2' then 'Monday'
when BO_WEEKOFF_MASTER.week_off_day ='3' then 'Tuesday'
when BO_WEEKOFF_MASTER.week_off_day ='4' then 'Wednesday'
when BO_WEEKOFF_MASTER.week_off_day ='5' then 'Thursday'
when BO_WEEKOFF_MASTER.week_off_day ='6' then 'Friday'
when BO_WEEKOFF_MASTER.week_off_day ='7' then 'Saturday'
else ''
end **" week_off_day"** ,
BO_WEEKOFF_MASTER.year,
case
when BO_WEEKOFF_MASTER.week_off_day ='1' then 'Sunday'
when BO_WEEKOFF_MASTER.week_off_day ='2' then 'Monday'
when BO_WEEKOFF_MASTER.week_off_day ='3' then 'Tuesday'
when BO_WEEKOFF_MASTER.week_off_day ='4' then 'Wednesday'
when BO_WEEKOFF_MASTER.week_off_day ='5' then 'Thursday'
when BO_WEEKOFF_MASTER.week_off_day ='6' then 'Friday'
when BO_WEEKOFF_MASTER.week_off_day ='7' then 'Saturday'
else ''
end **"week_off_day"**,
我犯了错误, 谢谢你
答案 0 :(得分:1)
您需要使用捕获组。
Regex.Replace(word , @"(\w+)=(case.*?\bend\b)", @"$2 ""$1""", RegexOptions.IgnoreCase);