最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

perl 模式匹配总结

来源:动视网 责编:小OO 时间:2025-09-30 08:32:36
文档

perl 模式匹配总结

 perl模式匹配总结正则表达式――perl模式匹配PractiaclExtractionandReportLanguage一.模式匹配操作符1.tr///替换操作符不支持正则表达式也不具备双引号替换能力     m//s///都支持正则表达式,并且可以提供或双引号替换能力(当用单引号作为操作符时则不具备变量替换能力)s///,tr///可以用两组不同的括号进行分割,以保证格式清晰s(good)2.绑定操作符=~,!~,m//s///tr///都支持绑定操作符的优先级非常高 3.perl特
推荐度:
导读 perl模式匹配总结正则表达式――perl模式匹配PractiaclExtractionandReportLanguage一.模式匹配操作符1.tr///替换操作符不支持正则表达式也不具备双引号替换能力     m//s///都支持正则表达式,并且可以提供或双引号替换能力(当用单引号作为操作符时则不具备变量替换能力)s///,tr///可以用两组不同的括号进行分割,以保证格式清晰s(good)2.绑定操作符=~,!~,m//s///tr///都支持绑定操作符的优先级非常高 3.perl特
 perl 模式匹配总结 

正则表达式――perl模式匹配

Practiacl Extraction and Report Language

一.模式匹配操作符

1.tr/ / / 替换操作符不支持正则表达式 也不具备双引号替换能力

      m/ /  s/ / / 都支持正则表达式,并且可以提供或双引号替换能力(当用单引号作为操作符时则不具备变量替换能力)

s/ / / , tr/ / /  可以用两组不同的括号进行分割,以保证格式清晰s(good)

2.绑定操作符 =~ , !~,m/ /  s/ / /  tr/ / / 都支持

绑定操作符的优先级非常高

 

3. perl 特有的全局变量

1.  $` , $& , $’ 分别存有匹配内容左,匹配内容,匹配内容右的内容

2. 可以用()捕获特定的模式 并依次存入 $1 $2 $3 中

 

二.模式修饰词

m/ /  s/ / /  和 tr/ / / 的修饰词不同

 /i忽略字母大小写
/s  /m允许模式中存在换行符 (一般模式中不允许存在换行符)

 /x 允许模式中换行,并表明注释,使正则表达式更易读

 /o 只编译一次,针对模式中的变量代换

 /g 无穷匹配

  
  
 

三.m/ /  匹配

1.分隔符

用 ? 或 ‘ 作分隔符时有特殊的含义

m?? 表示只匹配一次

m’ ‘ 表示禁止变量替换和六种转换    

2.返回值

标量环境里 匹配成功返回 1 ,失败 返回 0

列表环境里, 返回子字串的列表,并捕获()中的模式

  ( $key,$value) =~ m/(\\w+:(\\.*)/ ;

/g 修饰词的返回值

列表环境 : 返回所有匹配字串的列表

 如: my @perls = $string =~ m/perl/ig ; 

如果有捕获圆括号,则返回捕获到的字串

 如: 用字串 $string = “password=xyzzy verbose=9 score=0”

初始化下面的散列:%hash = {password => “xyzzy”, verbose => 9, socre=>0};

%hash = $string =~ /(\\w+)=(\\w+)/g ;

标量环境中 /g表示一次渐进的匹配,它令perl从上一次匹配停下来的位置开始一次新的匹配 如: while (/perl/g) { print “ $& \\n”};

三.s/ / / 操作符(替换)

返回值:

标量环境里返回值是成功替换的次数

替换部分被当作双引号看待可进行变量转换,而且可以使用前半部分模式匹配得到的变量$1,$2,$3 $&,等

新的修饰词

/e 把右边当作一个表达式计算

利用s/ / / 修改字串的用法

1.($newStr = $oldStr)=~ s/good/bad/g

2.替换数组的每一个元素:

    For (@newArray,@oldArray) {s/$_/newStr/g}

3.用单程循环对同一个变量重复替换

    For ($string) {

        s/^\\s//;  # 丢弃开头的空白

        s/\\s$//;  # 丢弃结尾的空白

        s/\\s+//g; # 丢弃中间的空白

4.把逗号放到整数的合理位置

$_ = “12345678”;

1 while s/(\\d)(\\d\\d\\d)(?!\\d)/$1,$2/;

Print “$_ \\n”  # 输出: 12,345,678

 

四.Tr/ / / 操作符 (转换)

1.tr 不支持正则表达式 和 变量替换,只是一种单纯的划定范围的替换

    尽管不支持变量替换,但可以用eval expr实现

    $count = eval “tr/$oldStr/$newStr/”;

    Die if $@;

如果仅仅是转换大小写

不要使用tr/ / /  建议使用双引号里的 转移字符 /U /L 类似的uc lc 函数

 

2.修饰词,与m/ /  s/ / /  的修饰词不同

/c 与searchlist 为补

/s 消除重复的字符

/d 删除找到的但没有替换的字符 ,任何再searchlist 中声明但再replacement没有给出替换的字符将被删除。

如果没有/d 修饰词,那么

1),replacement 比 searchlist 短,则将复制replacement最后一个字符直到足够长

2),replacement 为空,则 replacement = searchlist 可以用此用法统计次数和/s 压缩

            $string =~ tr/a-zA-Z//s  # bookkeeper -> bokeper

 

五.元字符

12个元字符 \\  |  (  )  [  {  ^  $  *  +  ? 

^ : 在字符集中 ^ 表示补集 [^1,2,3] 除了1,2,3

     在一般的模式中表示 以什么开头

$ : 表示以什么结尾

六.量词  分为最大量词,最小量词(由?控制)

1.最大量词

*  匹配0 或更多次

+ 匹配1 或更多次 

? 匹配 1 或 0 次

{count}匹配count次

{min,} 匹配至少min次 

{min,max} 匹配至少 min次,但不超过max次

2.最小量词

*? 匹配0次或更多次

+?匹配1次或更多次

??匹配0次或1次

{min,}? 匹配最多min次

{min,max}? 匹配至少min次,但不超过max次

 

七.常用的字母数字正则元符号

.    通配符匹配除了换行符外的任何单字符(如果加上修饰词/s 也可以匹配换行符)

\\d    数字 [0-9]

\\D    非数字

\\s    空格

\\S    非空格

\\w    字 [a-zA-Z0-9_]

\\W    非字

\\E    结束大小写或掩码

\\l    把下一个字符变成小写 \r":"font-family:Courier New;font-size:16px大写

\\L    把\\E以前的字母都变成小写  \\U 大写  如:s/revision/\-$&/g;

文档

perl 模式匹配总结

 perl模式匹配总结正则表达式――perl模式匹配PractiaclExtractionandReportLanguage一.模式匹配操作符1.tr///替换操作符不支持正则表达式也不具备双引号替换能力     m//s///都支持正则表达式,并且可以提供或双引号替换能力(当用单引号作为操作符时则不具备变量替换能力)s///,tr///可以用两组不同的括号进行分割,以保证格式清晰s(good)2.绑定操作符=~,!~,m//s///tr///都支持绑定操作符的优先级非常高 3.perl特
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top