我在文中有以下一行:
int* a, b;
预期结果是:
int *a, b;
以下Perl
代码应该产生预期的行:
$line =~ s#\s*\*\s*#\s\*#g;
不幸的是,结果如下:
int*a, b;
正则表达式有什么问题?
答案 0 :(得分:6)
我认为您不能使用\s
代替;它代表搜索中的一个字符类(空格,包括空格,制表符等),但是一个类在替换中没有任何意义。使用普通空间。
答案 1 :(得分:3)
只需改变:
$line =~ s#\s*\*\s*#\s\*#g;
由:
$line =~ s#\s*\*\s*# \*#g;
\s
在替换部分无效。
答案 2 :(得分:-1)
试试这个。
$line =~ s/(\S)\*(?=\s+)\s*/$1 \*/;