我正在处理最近从 X/Motif 转移到 Qt 的 C++ 代码库。我正在尝试编写一个 Perl 脚本,它将用 bool 替换所有出现的 Boolean(来自 X)。该脚本只是做了一个简单的替换。
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)如果在评论中不匹配。 (//或者/**/)
最佳答案
s/[^:]\bBoolean\b(?!")/bool/g
这不匹配 bool 值所在行开头的字符串,因为 [^:] 是“匹配不是 : 的字符”。
关于正则表达式用 bool 替换 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35178/