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