Perl使用正则表达式删除字符

时间:2015-07-11 13:19:33

标签: regex perl

我在perl中使用正则表达式有点困惑。我试图抓取一个网页,它似乎产生这样的字符串:Referred for adjudication-Orders issued.G.O.(Rt)No.826/2015/LBR\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0}\x{a0} Dated

我尝试使用以下内容:

$file =~ s/\\x\{a0\}//g;

但它并没有删除字符。如何在perl中删除带有正则表达式的字符\x{a0}

1 个答案:

答案 0 :(得分:3)

  

如何在perl中删除带有正则表达式的字符\ x {a0}?

s/\xa0//gs/\x{a0}//g

演示:

perl -wle 'print qq(a\x{a0}b) =~ s/\x{a0}//gr'

因为在双引号字符串中\xHH是一个转义,指的是ASCII代码点HH,其中H是任何十六进制数字,\x{HHHH}是指Unicode代码点HHHH。

如果您的字符串中有文字反斜杠,字母x等,s/\\x\{a0\}//g将起作用,但您可能正在使用转义该字符串的内容进行打印。

演示(单引号字符串不插入):

perl -wle 'print q(a\x{a0}b) =~ s/\\x\{a0\}//gr'