Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何替换除一个(分号)以外的所有非空白字符?_Regex_Perl - Fatal编程技术网

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

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中使用了以下正则表达式来替换所有连续的非空白字符

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/