我正在研究最近从 X/Motif 转移到 Qt 的 C++ 代码库。我正在尝试编写一个 Perl 脚本,它将所有出现的布尔值(来自 X)替换为 bool。该脚本只是做一个简单的替换。
s/\bBoolean\b/bool/g
有几个条件。
1) 我们的代码中有 CORBA,并且 \b 匹配不应更改的 CORBA:: Boolean。
2) 如果它被找到为一个字符串,它不应该匹配(即“布尔”)
更新:
对于#1,我使用了lookbehind
s/(?<!:)\bBoolean\b/bool/g;
对于#2,我使用了前瞻。
s/(?<!:)\bBoolean\b(?!")/bool/g</pre>
这很可能适用于我的情况,但以下改进如何?
3)如果在字符串中间,则不匹配(感谢nohat)。
4)如果在评论中,不要匹配。(// 或者 /**/)