Perl中删除或替换字符串中特殊字符(如空格)的⽅法
这篇博⽂很简单,只是因为我对Perl语⾔实在不熟悉,所以这⾥简单记录⼀下。
今天在写实验代码的时候,突然有了这样⼀个需求,就是⽤Perl将包含换⾏(或回车)的字符串变成⼀⾏,并且每⼀⾏⽤空格分隔,经过搜索,⽹友介绍了这样的写法:
$string=~ s/[\n\r]/ /g;
其实也很好理解,这⾥把⽹友的解释摘抄过来:=~ s/A/B/g  可以起到替换的作⽤,就是将内容A替换成内容B,后⾯的g是全局的意思,也就“全部替换”的意思。
[AB]意为A或者B两种情况。
Perl的转义字符和C很相似:
\n 换⾏
\r 回车
\t ⽔平制表符(Tab)
\b 退格
\e Esc (ASCII编码的转义字符)
\\ 反斜线
\" 双引号
所以上⾯这种写法就很好理解了。
另外在Perl中删除字符串前后空格的⽅法:
perl下载安装教程$string =~ s/^\s+//;
$string =~ s/\s+$//;
再举两个例⼦:
$str =~ s/\s\s+//g;  #-----全局替换2个以上的空格为空
$AAA =~ s/[\n\r]*//g
[ AB ]表⽰出现在中括号的是任意的其中⼀个,\n和\r是换⾏符 ,[\n\r]*中的*号表⽰0个或以上
总结起来,上⾯这条语句的含义是:将$AAA中的所有的换⾏符全部替换为空,也就是将所有换⾏去掉。
另外转载⼀下⽹友介绍的Perl正则表达式匹配规则:
++++++++++++++++++++++++++++++++++++++++++
对于⼀些常⽤的匹配⽅式有时候不需要去编写复杂的匹配模式,正则表达式的\w \s \d \b与量词的组合能帮我们解决很多事情。\w 匹配⼀个字母、数字或下划线字符,相当于[a-zA-Z_0-9]
\s 匹配⼀个空字符
\d 匹配⼀个数字
\b 匹配单词的⾸尾
这些修饰符的⼤写形式为它们匹配的相反情况。
这样我们要匹配连续的字符串可以⽤ \w+    匹配⼀个单词⽤ \b\w+\b    匹配空⽩⽤\s+
匹配所有字符⽤[\d\D],匹配除换⾏符之外的所有字符⽤“.”

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。