我在perl中有以下正则表达式来替换所有连续的非空格字符
perl -p -i.bak -e 's/^set gamma=\S*/set gamma=GAMMA/' tmp;
如果tmp
文件包含set gamma=sdjfskdf; #comment
,那么我想保留分号和注释。但使用\S*
会删除sdjfskdf;
。
我应该对正则表达式做出什么改变?
答案 0 :(得分:3)
尝试s/^set gamma=[^;\s]*/set gamma=GAMMA/
答案 1 :(得分:2)
在您的表达式中,您可以将\S*
替换为[^\s;]*
,其中;
与空格或{{1}}不匹配。