Regex 替换正则表达式
我想用Regex 替换正则表达式,regex,perl,Regex,Perl,我想用$替换类[A-Za-z0-9\]前面的所有空格 $string = "STRING sDir = sDrive"; $string =~ s/\s(?=[A-Za-z0-9_])/ \$/; 它只匹配一次并生成: STRING $sDir = sDrive; 要多次匹配,请使用/g标志: $string = "STRING sDir = sDrive"; $string =~ s/\s(?=[A-Za-z0-9_])/ \$/g; 要多次匹配,请使用/g标志: $string = "
$
替换类[A-Za-z0-9\]
前面的所有空格
$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/;
它只匹配一次并生成:
STRING $sDir = sDrive;
要多次匹配,请使用/g标志:
$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/g;
要多次匹配,请使用/g标志:
$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/g;
您可以对正则表达式使用
g
标志:
$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/g;
因此,s//
将为模式的每个匹配操作
默认的Perl行为是执行一次替换
g
标志告诉它对每个事件执行替换 您可以对正则表达式使用g
标志:
$string = "STRING sDir = sDrive";
$string =~ s/\s(?=[A-Za-z0-9_])/ \$/g;
因此,s//
将为模式的每个匹配操作
默认的Perl行为是执行一次替换
g
标志告诉它对每个事件执行替换 如果我认为你的意思是:
s/\s+\b/ \$/g;
这将删除前面的所有空格(因此
'a'
->'$a'
),并且\b是(?=(?的断言,如果我认为您的意思是:
s/\s+\b/ \$/g;
这将删除前面的所有空格(因此'a'
->'$a'
),并且\b是(?=(?您可以使用\w
而不是[a-Za-z0-9]
@eugene否,您不能将\w
用作[a-Za-z0-9]的同义词)
。如果您的意思是\w
及其所有含义,那么请使用\w
。如果您的意思是[A-Za-z0-9\]
,那么请使用[A-Za-z0-9\]
。但是,如果您知道您在处理ascii,您可以。@sreservor“说您的意思,说您的意思”。你可以使用\w
而不是[A-Za-z0-9'
@eugene No,你不能使用\w
作为[A-Za-z0-9'
的同义词。如果你的意思是\w
及其所有含义,那么就使用\w
。如果你的意思是[A-Za-z0-9_]
,然后使用[A-Za-z0-9_]
。但是,如果您知道您在处理ascii,您可以。@sreservor“说您的意思,说您的意思”。将其限定为告诉perl您正在处理ascii!虽然很难确定,但可以。这也将用“空格”替换制表符、换行符和其他空格,因此请小心。或者用s/(\s)(?=[a-Za-z0-9))/1\$/g
替换正则表达式。您也可以尝试s/(?这也会用“空格”替换制表符、换行符和其他空格,所以要小心。或者用s/(\s)(?=[a-Za-z0-9])/$1\$/g
。也可以尝试s/(?)?