msgbox("Can't find the student.", 1, 1);
msgbox(PAK, 2, 1); msgbox("Delete OK!\tPress any key to continue...", 1, 1); //wgetch(my_win);
b_asksave = 1;
--len;
if (len == 0)
{
msgbox(
"Delete OK!\tThe data is empty now!\tPress any key to continue...",
1, 1);
wgetch(my_win);
return 0;
}
有上面一段代码,void msgbox(char* ch, int line, int bold, int getch)因为增加了最后一个参数,导致项目里所有msgbox都要修改.
现在我要把类似msgbox(PAK, 2, 1);都改成msgbox(PAK, 2, 1,0);最后增加一个,0参数我这样写错了:    (?=)msgbox\((.*?)(\d)(\);)
替换成:      $0$1,0$2

解决方案 »

  1.   

    trystring resultcode = Regex.Replace(yourcode,@"(msgbox\(.*?\d+)(\);)","$1,0$2");
      

  2.   

    VS有一个功能叫查找替换 Ctrl+H
      

  3.   

    没注意,你还有换行的。string resultcode = Regex.Replace(yourcode, @"(?is)(msgbox\(.*?\d+)(\);)", "$1,0$2");
      

  4.   

    try...Regex reg = new Regex(@"(?i)msgbox\([^()]+(?=\);)");
    string result = reg.Replace(yourStr, "$0, 0");
      

  5.   

    sorry,被你猜对了,呵呵,
    有点疑惑,(?=\);)正确,但是写成(?<=\);)就错了,(?<=不是匹配右边的吗
      

  6.   

    (?=expression) 是顺序环视,是对所在位置右侧加的一个条件限定
    (?<=expression) 是逆序环视,是对所在位置左侧加的一个条件限定也就是说(?<=\);)是查找左侧是否为“);”,而(?=\);)是查找右侧是否为“);”
    可以参考我的博客关于环视的讨论