虽然这里有几个正则表达式示例显示了许多变体,但我只是想在Perl中使用正则表达式来搜索2个不同的字符串,其中一个字符串作为下划线(_),另一个字符串作为前向符号(/)并用以下内容替换每个字符串连字符( - )加字符串。我使用分隔符反斜杠,但它是不正确的输出。
Input: Output:
_APPLE -APPLE
/APPLE -APPLE
这是我的代码:
$string1 =~ s/\_\/APPLE/-APPLE
$string2 =~ s/\/\/APPLE/-APPLE
该代码有一个额外的(转义)/
,并将匹配字符串与_/
(和第二种情况下的//
)。这不是你的数据,它有_
或/
,而不是两者。
此外,没有必要逃脱_
,并没有/
,如果它不是分隔符。
要匹配几个字符中的任何一个,最干净,最有效的是字符类
$string =~ s{[_/](\w+)}{-$1};
交替也适用于此
$string =~ s{(?:_|/)(\w+)}{-$1};
但是当匹配的可能性有更多的字符(word|another
)时更合适。
这里有很多假设,考虑到问题中的指定很少。例如,\w
也匹配数字和_
以及字母。如果您澄清了我将根据需要编辑的要求。
我假设代码编译所需的缺少的结束分隔符是发布中的拼写错误。