除了以下内容之外,我几乎可以替换单词中的所有特殊字符:
">" - greater than symbol
"<" - less than symbol
"=" - equal to symbol
我可以通过转义它们来制作像(+ [] /)这样的元字符的其他特殊字符。
但是,我无法使上述3个特殊字符起作用。
$word =~ s/[\>\<\=]//g; # Delete these special characters from the word
我该如何替代它们?在我的情况下,我试图删除或删除单词中的特殊字符,这3个符号似乎是我无法替代的唯一符号。
答案 0 :(得分:5)
嗯,即使在正则表达式体内,也不需要转义这些符号,更不用说将它们用作字符类的一部分了。这只是有效:
my $test_string = '<my_word=some_word>';
$test_string =~ s/[<>=]//g;
# $test_string =~ s/<|>|=//g; is correct too, although a bit slower
print $test_string; # my_wordsome_word
但是,如果在你的例子中写下它works the same。所以我猜错误是你的代码中的其他地方。你能展示更多吗? )
答案 1 :(得分:2)
正如其他人所指出的那样,你的角色在任何方面都不是特别的,所以你的代码应该正常工作。
我想补充一点,替换运算符可能不是从字符串中删除字符的最佳方法。没有必要为此调用正则表达式引擎的功能和复杂性。我会找到音译操作符(参见perldoc perlop中的tr ///)。
$ perl -E'$ARGV[0]=~ tr/<>=//d; say $ARGV[0]; ' 'a<>=b'
ab
答案 2 :(得分:1)
&lt;,&gt;没什么特别之处和=,它们不是元字符,所以你甚至不需要逃避它们
perl -E'$ARGV[0]=~ s{[<>=]}{}g; say $ARGV[0]; ' 'a<>=b'
给我ab
你的问题来自别的东西