Regex 如何替换除一个(分号)以外的所有非空白字符?
我在perl中使用了以下正则表达式来替换所有连续的非空白字符Regex 如何替换除一个(分号)以外的所有非空白字符?,regex,perl,Regex,Perl,我在perl中使用了以下正则表达式来替换所有连续的非空白字符 perl -p -i.bak -e 's/^set gamma=\S*/set gamma=GAMMA/' tmp; 如果tmp文件包含set gamma=sdjfskdf#comment然后我想在注释中保留分号。但是使用\S*删除sdjfskdf 我应该对正则表达式做什么更改 在表达式中,可以将\S*替换为[^\S;]*,它既不匹配空格也不匹配在表达式中,您可以将\S*替换为[^\S;]*,它既不匹配空格也不匹配试试s/^set
perl -p -i.bak -e 's/^set gamma=\S*/set gamma=GAMMA/' tmp;
如果tmp
文件包含set gamma=sdjfskdf#comment
然后我想在注释中保留分号。但是使用\S*
删除sdjfskdf代码>
我应该对正则表达式做什么更改 在表达式中,可以将\S*
替换为[^\S;]*
,它既不匹配空格也不匹配
在表达式中,您可以将\S*
替换为[^\S;]*
,它既不匹配空格也不匹配
试试s/^set gamma=[^;\s]*/set gamma=gamma/
试试s/^set gamma=[^;\s]*/set gamma=gamma/