• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Perl正则表达式

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

perl是最好的文本处理语言,而正则表达式是perl文本处理的核心。

一个正则表达式就是一种方法,这种方法能够描述一组字符串,但不用列出所有的字符串。

一、正则表达式的几种用法:

        1:确定一个字符串中是否匹配某个模式,在一个布尔环境中它们返回真或假。

           if(/Windows 95/) {print "Time to upgrade?\n"}

        2:如果你能将一个模式在字符串中定位,你就可以用别的东西来替换它。

            s/windows/linux/;将windows替换成linux。

        split中,正则表达式定义了各个数据与之间定界的分隔符。

        ($good,$bad,$ugly)=split(/,/,"vi,emacs,teco");

        正则表达式最简单的应用就是匹配一个文字表达式。

            while($line=<FILE>){

                if($line=~/http:/){

                print $line;

            }    

            }

            在这里,=~符号(模式绑定操作符)告诉perl在$line中寻找匹配正则表达式"http:",如果发现该表 达 式,返回真。

         更简洁的写法:

        while(<FILE>)

               {print if /http:/;}

更方便的正则表达式:

        /[a-zA-Z]+:/这里用方括弧来定义了一个字符表,a-z和A-Z代表所有的字母字符。+是一个特殊字符,表示匹配“+”前面内容一次或多次。提示:反斜杠不是正则表达式的一部分,但是它是模式匹配操作符的一部分。

二、字母字符:

    空白  \s   [\t\n\r\f]

    词     \w  [a-zA-Z_0-9]

    数字 \d   [0-9] 

        这些简写只匹配单个字符,可以用\w+来匹配一个词。这些通配符大写方式和小写方式代表的意思刚好相反,\D表示左右非数字的字符。

特别的字符类型:

        用“.”来表示,将匹配所以的字符,例如,/a./将会匹配所有含有一个“a”并且a不是最后一个字符的字符串。"at","a!" "oasis"

三、量词:

        \w+可以用来匹配多个“文本”类型,这里+就是量词。所以的量词都放在需要多重匹配的东西后面。

        最简单的量词就是指定最小和最多的匹配次数。可以将两个数字用花括弧括起来,并用逗号分开。                例如:\d{7,11}将匹配最少7位数字,最多11位数字。\d{7,}最大匹配会有无限次数。\d{7}将匹配开始的前七位。

    +,代表{1,},意思为最少一次

    *,表示{0,}表示零次或多次

    ?,表示{0,1},表示零次或一次

        缺省时量词作用在它前面的单个字符上,因此/bam{2}/将匹配“bamm”而不是“bambam”,如果你要对多于一个字符使用量词,你需要使用圆括弧,因此为了匹配“bambam”,需要使用/(bam){2}/

            特殊符号:\b匹配单词边界,就是位于单词字符(\w)和非单词字符(\W)之间的零宽度的地方。(字符串的开始和结尾也被认为是非单词字符。)例如:/\bFred\b/将会匹配"The great Fred"和"Fred the great"中的Fred,但不能匹配"Fredrick the greart",因为在"d"后面没有跟着非单词字符。

            ^  表示字符串开始和结尾的锚点,^如果放在模式中的第一个字符,将匹配字符串的开始。/^Fred/将匹配"Fred the great"中的Fred,但不配"the great Fred".相反的,/Fred^/两者都不配。

四、反引用:

            圆括弧来为量词包围一些字符,同样,可以用圆括弧来记住匹配到的东西。/(\d+)/将匹配到的数字保存到一个特殊变量中。在同一个正则表达式中,可以使用反斜杠加上一个整数。数字代表从左边开始计数左圆括弧的个数。要匹配<B>Bold</B>,可以用/<(.*?)>.*?</\1>.两个部分都匹配到同样的字符串"B"。不在同一个正则表达式,可以使用¥后边跟一个整数。/(\S+)\s+(\S)/$2 $1/,实现了将一个字符串的两个词互相调换。

五、列表处理:

            标量环境(处理单个的事物),列表环境(处理复数个事物)

            一些操作符产生列表(如keys),而一些操作符使用列表(如print),还有其它一些操作符将列表串进其它的列表(如sort)。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Perl中map和grep 的使用区别发布时间:2022-07-22
下一篇:
perl split函数发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap