如何替换除一个(分号)之外的所有非空格字符?

时间:2013-03-30 05:30:13

标签: regex perl

我在perl中有以下正则表达式来替换所有连续的非空格字符

perl -p -i.bak -e 's/^set gamma=\S*/set gamma=GAMMA/' tmp;

如果tmp文件包含set gamma=sdjfskdf; #comment,那么我想保留分号和注释。但使用\S*会删除sdjfskdf;

我应该对正则表达式做出什么改变?

2 个答案:

答案 0 :(得分:3)

尝试s/^set gamma=[^;\s]*/set gamma=GAMMA/

答案 1 :(得分:2)

在您的表达式中,您可以将\S*替换为[^\s;]*,其中;与空格或{{1}}不匹配。