加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl正则的命名捕获与匹配变量使用

发布时间:2020-12-15 20:58:36 所属栏目:大数据 来源:网络整理
导读:?今天说的也算是perl正则表达式的一两点高级特性--命名捕获与匹配变量,如果能够掌握的话,对于提升能力和效率都有帮助。 #!/usr/bin/perl?-w ? =pod? 命名捕获--给匹配上的内容加上标签? 捕获到的内容都会保存在%+散列中,这个散列的key为对应的标签;? 方

?今天说的也算是perl正则表达式的一两点高级特性--命名捕获与匹配变量,如果能够掌握的话,对于提升能力和效率都有帮助。

 
 
  1. #!/usr/bin/perl?-w?
  2. =pod?
  3. 命名捕获--给匹配上的内容加上标签?
  4. 捕获到的内容都会保存在%+散列中,这个散列的key为对应的标签;?
  5. 方便之处就是利于程序扩展和阅读,不用繁琐的一个一个去数括号来获取匹配变量?
  6. =cut?
  7. use?strict;?
  8. my?$str?=?"jack?and?rose";?
  9. if?($str?=~?/(?<first>S+)?(and|or)?(?<second>S+)/)?{?
  10. ????my?($first,?$second)?=?($+{first},?$+{second});?
  11. ????print?"$firstn$secondn";??#?jack,?rose?
  12. }?
  13. ?
  14. my?$str1?=?"name:zt,age:19,fav:sport";?
  15. if?($str1?=~?/(?<name>S+),age.+,(?<fav>S+)/)?{?
  16. ????my?($name,?$fav)?=?($+{name},?$+{fav});?
  17. ????print?"$name,?$favn";??#?name:zt,?fav:sport?
  18. }?
  19. ?
  20. =pod?
  21. 匹配变量?
  22. 希望通过这个例子可以让没有应用过匹配变量的同学开始使用匹配变量,关于匹配变量的争议也很多,有人说它太慢?
  23. 不过对于动态语言来说,慢那么一点没多大影响,方便最重要,?尤其在用正则匹配替换标记语言时很方便,比如处理html或者xml文件?
  24. =cut?
  25. my?$str2?=?"happy?new?year!";?
  26. $str2?=~?/new/;?
  27. print?<<"EOF";????
  28. prematch:?$`?
  29. match:?$&?
  30. postmatch:$'?
  31. EOF?
  32. ?
  33. #?修改页面元素?
  34. open?my?$html,?"<?index.htm"?
  35. ????or?die?"open?failure:?$!";?
  36. while?(<$html>){?
  37. ????if?(/<div>s*(.*?)s*</div>/){?
  38. ????????$_?=?$`.?change_div($1)?.?$';?
  39. ????}?
  40. ????print?$html?$_;?
  41. }?
  42. close?$html;?

? ? 根据上面我写出来的简单实用实例,可以方便推而广之道大家自己的应用场合,希望有用。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读