求助,关于正则表达式

飞龙在笑 2016-03-09 10:12:10
string str1 = "intEMV_InitPara_xxx(void){if(ParaInfo.cFlag==0x00){emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,1);}else{emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,0);}}intEMV_InitPara(void){if(ParaInfo.cFlag==0x00){emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,1);}else{emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,0);}}";
string str2 = "intEMV_InitPara(void)";
string str3 = "intEMV_InitPara_xxx(void)";
在str1的字符串中提取出str2函数名或str3函数名的函数体内容,用正则表达式要什么写?
...全文
154 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞龙在笑 2016-03-09
  • 打赏
  • 举报
回复
谢谢你,学习了
sunny906 2016-03-09
  • 打赏
  • 举报
回复

        private string MatchValue(string text,string pattern)
        {
            pattern = pattern.Replace("(", @"\(").Replace(")", @"\)");
            pattern = "(?is)" + pattern;
            pattern += @"\{((?<group>\{)|(?<-group>\})|[^{}]+)*(?(group)(?!))\}";
            return Regex.Match(text, pattern).Value;
        }

            string str1 = "intEMV_InitPara_xxx(void){if(ParaInfo.cFlag==0x00){emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,1);}else{emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,0);}}intEMV_InitPara(void){if(ParaInfo.cFlag==0x00){emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,1);}else{emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,0);}}";
            string str2 = "intEMV_InitPara(void)";
            string str3 = "intEMV_InitPara_xxx(void)";
            Console.WriteLine(MatchValue(str1,str2));
            Console.WriteLine(MatchValue(str1, str3));

输出:
intEMV_InitPara(void){if(ParaInfo.cFlag==0x00){emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,1);}else{emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,0);}}
intEMV_InitPara_xxx(void){if(ParaInfo.cFlag==0x00){emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,1);}else{emv_add_aid_item(ParaInfo.cLenAID,ParaInfo.AID,0);}}
飞龙在笑 2016-03-09
  • 打赏
  • 举报
回复
对正则不是很懂,能不能详细一点,就是str1字符串是从文件读取的,然后有一个函数名,想找函数名对应的函数体内容
  • 打赏
  • 举报
回复
你是要按后面的名称来获取str1的的整个函数方法吗?如果是的话,那你查下正则表达式的平衡组,按花括号进行平衡匹配
飞龙在笑 2016-03-09
  • 打赏
  • 举报
回复
或者还有什么其他方法提取函数体内容?

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧