C++ 正则表达式添加匈牙利符号

C++ 正则表达式添加匈牙利符号,c++,regex,perl,hungarian-notation,C++,Regex,Perl,Hungarian Notation,我正在解析.h和.cpp文件,我需要找到/替换所有非匈牙利符号的变量,并使用它们的值。啊,为什么?!你问?努夫说,我的雇主需要匈牙利符号 现在让我们来处理ints 考虑到这些情况 int row; // no hungarian prefix int nrow(9); // incorrect capitalization int number; // hmm... int nnumber = getValue(); // uh oh! 它们应改为: int nRow; int

我正在解析.h和.cpp文件,我需要找到/替换所有非匈牙利符号的变量,并使用它们的值。啊,为什么?!你问?努夫说,我的雇主需要匈牙利符号

现在让我们来处理ints

考虑到这些情况

int row;      // no hungarian prefix
int nrow(9);  // incorrect capitalization
int number;   // hmm...
int nnumber = getValue(); // uh oh!
它们应改为:

int nRow;
int nRow(9);    // obviously ctor args and assignments shouldn't change
int nNumber;
int nNumber = getValue();
理想情况下,我只想打一个s///的单线电话

对于额外的挑战,如果在使用int进行类型检查之后,有人可以得到一些东西来更改此变量的所有实例,这将为您赢得一些分数

以下是我目前掌握的情况:

s/(int\s+)(?!n)(\w+)/$1n\u$2/g;
但这与int nrow或int number之类的内容不匹配

提前谢谢

没有

更明确地说,您正在尝试使用正则表达式编译程序

例如,您的一行已经忘记了函数参数,并且它无法解析任何用户定义的类型struct,enum。更不用说了。CPP建议C++建议类。< /P> 另外,方法/函数/内联注释会发生什么情况

我的建议是找一个语法编译器,并把它传递给C++语法,因此对于每一个定义,都可以得到写入文件的值和类型。然后你就可以玩regex了。您还可以尝试在每次使用每个变量时写入,以便以后自动替换它们

然而比一个简单的正则表达式复杂得多,但是这个简单的正则表达式会失败得太多,最终你会手动更改代码


作为一个积极的方面,也许当你告诉你的老板这个频道要花多少钱时,他会考虑得更好。

我们可以推荐一个新的雇主吗?匈牙利符号不应该这样使用。这是原始白皮书:这是joelonsoftware发布的关于它的帖子:@IronMensan很棒的文章!直接转到我的书签。在您的示例中,您正在使用重命名将不同的名称映射到相同的名称!!例如,number和nnumber都变成nnumber。打破工作代码的可靠方法…我不想用正则表达式编译程序。我不知道你从哪里弄来的。事实上,我不打算在我完成后让它编译,但至少我可以回去对语法做一些快速的修改,做得很好。是的,你会编译它,但你还不知道。为了知道第30行的id变量是第10行的nId还是第20行的sId,您需要知道您使用的是哪个方法/函数。还有,程序定义的类型、类的问题。您需要解析程序,构建符号表。。。您生成机器代码或修改的源代码这一事实与此无关。