00. perl正则匹配:反斜杠、修饰符、内拆变量、

反斜杠

  • 三类功能
    • 放在元字符之前时,撤销此元字符的特殊含义,使此元字符仅仅匹配其自身。
    • \ 与后续字符组合成某类字符组时,常用的模式如下:
模式含义
\d数字的集合,等价于[0-9]
\D非数字的集合,等价于[^0-9]
\n换行符,其实就是\n字符本身
\s(小写字符s)空格字符
\S(大写字符S)非空格字符
\t水平制表符Tab,其实就是\t字符本身
\w(小写字符w)数字、字符和下划线的组合,等价于[_0-9a-zA-Z]
\W(小写字符W)除了\w所表示的字符以外的字符,等价于[^_0-9a-zA-Z]
  • \与后续字符组合成某类锚位,用来匹配位置
模式含义
\A字符串的开头位置
\b“单词”的边界。“单词”由数字、字母和下划线组成。边界指整个字符串的开头或者结尾,或者“单词”与“非单词”之间的位置(没有宽度的)
\z (小写字符z)字符串的结尾位置
\Z (大写字符Z)字符串的结尾位置、或者行结尾,即换行符之前的位置,等价于处在模式结尾处的$

修饰符

  • 在模式的尾部/之后,可以添加一些修饰符,调整模式的匹配功能
修饰符含义模式
i大小写无关/abc/i
s使句点号.匹配换行符\n/a.*b/s
x忽略模式中的空格/a b/x
  • x会忽略模式中包含的空格,使我们可以把很长的模式(可读性较差)以(任意数量的)空格或换行符分割开。
  • 有了修饰符x,我们不仅可以添加一些空格或者换行,还可以在模式中添加注释#,进一步提高代码可读性。
  • 添加注释时,需要注意两点:
    1. 注释中不能出现模式的终止符号,上例中是/
    2. 如果添加了#注释,那么原先模式中的#,则需要换成#或者[#]。

内插变量

  • 模式的内容都是我们预先写好的,它们是固定的。如果有很多种模式需要匹配,可以直接编写变量名。

分组和捕获(grouping capturing)

  • 捕获后的变量 $1
  • 反向引用 \1

替换

  • $str =~ s/regular experssion/replacemnt/

    • 替换一次
  • $str =~ s/regular experssion/replacemnt/

    • 全部替换
  • 界定符

    • 模式匹配的界定符,除了最常用的/,还可以是其他成对的括号,或者其他字符。那么在替换模式中,事实上有两组界定符,它们可以是不同也可以是相同的。
    • s{regular experssion}{replacement}
    • s{regular experssion}
  • 不改变原变量

    • 如果不希望改变左侧变量的值,则需要先复制一份:
$str1 = "abcde abcde";
$str2 = $str1;
$str2 =~ s/bcd/BCD/;

#可以简写成:
($str2 = $str1)=~ s/bcd/BCD/;
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值