如何使用regex.匹配c#

本文关键字:匹配 regex 何使用 | 更新日期: 2024-10-21 14:32:29

如何使用regex。匹配

输入字符串

  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"**,

在我犯错误的地方,感谢u

如何使用regex.匹配c#

您需要使用捕获组。

Regex.Replace(word , @"('w+)=(case.*?'bend'b)", @"$2 ""$1""", RegexOptions.IgnoreCase);

演示