我将int转换为C文件中的int32_t。
检查它是否是int而不是任何单词我将“int”(int之后的一个空格)转换为“int32_t”
我的代码
open(FILE, $input) or die $!;
my @lines = <FILE>;
foreach(@lines) {
$_ =~ s/int /int32_t /g; # int to int32_t
print $_;
}
如果输入C文件的行为
print abcd;
然后它也会转换为print32_t。
我如何排除此类案件。这意味着我需要检查一些字母是否在'int'之前,或者我需要检查int是否是一个单词
答案 0 :(得分:4)
在正则表达式中对字边界使用\b
零宽度断言。
foreach (@lines) {
s/\bint\b/int32_t/g; # int to int32_t
print;
}
Perlre就像这样描述:
单词边界(
\b
)是具有\w
的两个字符之间的点 在它的一边和另一边的\W
(按任意顺序), 从头的开始和结束计算虚构的字符 字符串匹配\W
。 (在字符类\b
中表示 退格而不是单词边界,正如通常所做的那样 双引号字符串。)