好的,我已经检查了以前的类似问题,并且我一直在处理不同的quotemeta 变体,但有些东西仍然不正确。
我有一个单词 ID 和两个单词的一行 - 第一个是错误的单词,第二个是正确的。我正在使用正则表达式用正确的单词替换错误的单词。
$line = "ANN20021015_0104_XML_16_21 A$xAS A$xASA";
@splits = split("\t",$line);
$wrong_word = quotemeta $splits[1];
$right_word = quotemeta $splits[2];
print $right_word."\n";
print $wrong_word."\n";
$line =~ s/$wrong_word\t/$right_word\t/g;
print $line;
我在做什么有什么问题?
编辑
问题是我无法保留完整的单词——它们在特殊字符处被截断。此代码对于没有特殊字符的单词非常有效。
上述示例所需的输出是:
ANN20021015_0104_XML_16_21 A$xASA A$xASA
但我得到的是
ANN20021015_0104_XML_16_21 A A
因为$
性格。