在单次拍摄中查找和替换两个变量中的相同字符

ssr*_*012 1 regex perl

我想找到并替换多个存储内容的标量变量(每个字符串的内容会有所不同)因此我需要为两个变量插入两行来进行相同的替换.

$str1=~s/\_/&underscore\;/g;
$str1=~s/\^/&carrot\;/g;

$str2=~s/\_/&underscore\;/g;
$str2=~s/\^/&carrot\;/g;
Run Code Online (Sandbox Code Playgroud)

是否有可能在一次拍摄/同时替换所有要更换的弦.请注意,内容会因字符串而异.(可能是我问问题的方式是孩子,但我正在做更换超过200线,但试图减少编码线)

Bor*_*din 6

您可以将变量放在for循环中,循环将$_依次为每个变量添加别名.请注意,下划线或分号都不需要在正则表达式模式中进行转义

for ( $str1, $str2 ) {
    s/_/&underscore;/g;
    s/\^/&carrot;/g;
}
Run Code Online (Sandbox Code Playgroud)

然而,这两者都是非标准实体.你自己宣布过吗?你可能意味着caret而不是carrot,这是一种蔬菜!我看过它^,但我认为这也是非标准的.你总是可以使用^(和_下划线)