打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Perl正则表达式内容盘点(3) - 51CTO.COM
    Perl正则表达式的概念你是否了解,这里向大家简单介绍一下,Perl正则表达式也经常被称为模式,用来描述或者匹配一系列符合某个句法规则的字符串。

     


    2.5任意符号.,和次数符号*以及+

    Perl正则表达式里点号是通配任意字母的,例如

    $string=~/w.*/i;

    就匹配$string里从第一个w字母开始一直到字符串结束。*表示匹配任意字母0到任意多次。*号也常被换成+号,表示匹配1到任意多次。如果即没有*也没有+,那么就是匹配1次。如果要自己定义匹配的次数或者次数上下限怎么办?用{}符号:

    $string=~/\d{5,15}/;

    上面的式子匹配5到15位数字

    $string=~/\d{20}/;

    上面的式子匹配20位数字。
    附带说两个常用的符号,\S和\s。前者是"非空白",后者是"空白",具体来说包括回车、空格、跳格、响铃。


    2.6贪婪的+和*,止贪剂?

    Perl的Perl正则表达式是贪婪的(确切地说,次数符号+和*是贪婪的),可以帮助你做一些事情。

    my$string='$290098';

    $string=~/\$(\d+)/;

    由于+号的贪婪性,$1会得到值"290098",而不是遇到第一个数字2就完成匹配。

    但有的时候你会不希望他贪婪,希望见好就收。还是我前面用过的一个例子

    my$string="Applejuice,appleCider,applejeans,applepie,appleplate,apPLebag,…";

    如果用$string=~/(apple.*),/i;

    由于*的贪婪性,它会一直匹配到最后一个逗号才停下来,这不是我们想要的结果。解决办法是用止贪符号?紧跟在*或者+后面。

    $string=~/(apple.*?),/i;

    问号会约束*遇到第一个逗号就停下来。


    2.6头锚^和尾锚$

    有时候你希望从一个字符串的开始或者结尾匹配

    my$string='Aquickbrownfoxjumpsoveralazysnake';

    $string=~/^A/;#匹配第一个字母是否为A

    $string=~/snake$/;#匹配最后几个字母是否为snake

    还有一个\b,匹配的是单词边界,意思是空白或者开头或者结尾。

    3.其它相关函数及注意事项

    3.1替换功能和quotemeta

    有时候你不仅希望找到你想要那些字符串,还想替换掉它们。还记得前面说的匹配符后面的m符号么?现在是使用另一个,s符号(替换,subplace)的时候了。

    $string=~s/apple/apple/i;

    上面表达式将$string里所有不用形式的apple统一成全小写的apple.这里面可以用变量:

    $string=~s/$string1/$string2/i;

    $string里所有匹配$string1的地方都会被替换成$string2。但是,要注意,除非你能确保$string1里面不含任何特殊符号(+-*^$.()[]等)或者你需要的就是那些符号,最好在调用上面式子之前处理一下$string1

    $string1=quotemeta($string1);

    quotemeta()的作用是给字符串里的特殊符号加上合适的转义符号。注意,不需要给$string2做这个处理。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
perl 采用正则表达式替换字符串处理
Perl 中的正则表达式2
preg_match 与 preg_match_all 函数
PHP正则表达式:PHP中的正则函数-网站制作教程
php中正则的使用
Java正则表达式详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服