我正在研究最近从X/Motif转移到Qt的C++代码库.我正在尝试编写一个Perl脚本,用bool替换所有出现的布尔值(来自X).该脚本只是做了一个简单的替换.
s/\bBoolean\b/bool/g
Run Code Online (Sandbox Code Playgroud)
有几个条件.
1)我们的代码中有CORBA,\ b匹配CORBA :: Boolean,不应该更改.
2)如果它被发现是一个字符串(即"布尔")它不应该匹配
更新:
对于#1,我使用了lookbehind
s/(?<!:)\bBoolean\b/bool/g;
Run Code Online (Sandbox Code Playgroud)
对于#2,我使用了前瞻.
s/(?<!:)\bBoolean\b(?!")/bool/g</pre>
Run Code Online (Sandbox Code Playgroud)
这很可能适用于我的情况,但以下改进如何?
3)如果在字符串的中间,请不要匹配(感谢nohat).
4)如果在评论中不匹配.(// 要么 /**/)
要修复条件 1,请尝试:
s/[^:]\bBoolean\b(?!")/bool/g
Run Code Online (Sandbox Code Playgroud)
[^:] 表示匹配“:”以外的任何字符。
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |