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

标签 c++ regex perl hungarian-notation

我正在解析 .h.cpp 文件,我需要用它们的 Hungarian equivalents 查找/替换所有非匈牙利标记变量 . “啊,为什么?!”你问?我的雇主要求使用匈牙利符号,'nuff 说。

现在让我们只处理 int

鉴于任何这些情况......

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 nrowint number 之类的东西不匹配。

提前致谢!

最佳答案

没有。

更明确地说,您正在尝试使用正则表达式编译程序。 This does not work that way .

例如,您的一行代码已经忘记了函数参数,并且它无法解析任何用户定义的类型(struct、enum)。更不用说 .cpp 建议 C++ 建议类。

此外,方法/函数/内联注释会怎样?

我的建议是在某处找到一个语法编译器并将 c++ 语法传递给它,这样对于每个定义,您都可以将值和类型写入文件。然后你就可以享受正则表达式的乐趣了。您也可以尝试在每次使用每个变量时都编写,以便稍后自动替换它们。

虽然比简单的正则表达式要复杂得多,但是那个简单的正则表达式会失败很多,以至于最后您将手动更改代码。

作为一个积极的方面,也许当你告诉你的老板钱币花了多少钱时,他可能会考虑得更好。

关于c++ - 正则表达式添加匈牙利符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918707/

相关文章:

javascript - 多行文本区域的正则表达式

javascript - 验证 javascript/jquery 中的 url 格式

regex - 如何使 Perl 正则表达式的一部分成为可选的?

C++ visual studio,txt文件中的i/o

c++ - 将模板参数传递给内部结构时出错

c++: 函数 arg char** 与 char*[] 不同

python - Python、PyQt4 中的 Qt C++ 代码

php - 是否可以使用正则表达式编辑字符串?

perl - 对单引号/双引号和\\关于拆分感到困惑

regex - Perl正则表达式中的加权析取?