C# 如何使用正则表达式在c中查找字符串中最后一次出现的“,”

C# 如何使用正则表达式在c中查找字符串中最后一次出现的“,”,c#,regex,C#,Regex,如何使用正则表达式在c中查找字符串中最后一次出现的“,” 我试过下面的代码 string ss = Regex.Replace(strQuery, @"/\,(?<firstMatch>.*)=case(?<secondMatch>.*end\b)", @" case ${secondMatch} ""${firstMatch}"" ", RegexOptions.IgnoreCase); 我得到了输出 SELECT * FROM (select TOP 5 ROW_N

如何使用正则表达式在c中查找字符串中最后一次出现的“,”

我试过下面的代码

string ss = Regex.Replace(strQuery, @"/\,(?<firstMatch>.*)=case(?<secondMatch>.*end\b)", @" case ${secondMatch} ""${firstMatch}"" ", RegexOptions.IgnoreCase);
我得到了输出

SELECT * FROM (select TOP 5 ROW_NUMBER() OVER (ORDER BY Region_desc) as ROW_NUM,* from (select *, ROW_NUMBER() over (order by Region_desc desc) as gridviewcount from( SELECT BO_REGION_MASTER.Region_ID,BO_REGION_MASTER.Region_CODE,BO_REGION_MASTER.Region_DESC,STATUS=CASE WHEN BO_REGION_MASTER.STATUS='A' THEN 'ACTIVE' WHEN BO_REGION_MASTER.STATUS='I' THEN 'INACTIVE' ELSE '' END,
但我需要像下面这样的输出

 SELECT  * FROM (select  TOP 5 ROW_NUMBER() OVER (ORDER BY Region_desc) as ROW_NUM,* from (select *, ROW_NUMBER() over (order by Region_desc desc) as gridviewcount from( SELECT BO_REGION_MASTER.Region_ID,BO_REGION_MASTER.Region_CODE,BO_REGION_MASTER.Region_DESC,CASE WHEN BO_REGION_MASTER.STATUS='A' THEN 'ACTIVE' WHEN BO_REGION_MASTER.STATUS='I' THEN 'INACTIVE' ELSE '' END "STATUS",

使用下面的正则表达式,然后将匹配项替换为$2$1

如果要进行不区分大小写的匹配,请在开始处添加不区分大小写的修饰符?i

更新:

替换字符串:

$1$3 "$2"

您真的需要使用正则表达式将其过度复杂化吗?有一个非常好的方法可以做到这一点:。但最后有一个逗号。您不需要正则表达式来查找某事物最后一次出现的索引,您可以使用字符串。LastIndexOfi需要使用正则表达式,因为输入可能differ@nvoigt他还想在我需要这样的输出时帮我拿零件。。。选择*从选择*从选择*从选择*从选择*从选择*从选择*从选择*从选择*从选择BO从地区到地区到地区,从选择BO从地区到地区,从区域到地区,从区域代码,从BO从地区到地区,当BO_REGION_MASTER.STATUS='A'然后是'ACTIVE'时,BO_REGION_MASTER.STATUS='I'然后是'INACTIVE'时的情况,否则结束状态,
(?i).*,([^=]*)=(CASE.*),
(?i).*,([^=]*)=(CASE.*end)\b
string ss = Regex.Replace(strQuery, @".*,([^=]*)=(CASE.*end)\b",  "$2 $1", RegexOptions.IgnoreCase);
(?i)(.*,)([^=]*)=(CASE.*end)\b
$1$3 "$2"