大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> CGI专区 -> Perl教学 第六篇 模式匹配之一

Perl教学 第六篇 模式匹配之一

时间: 2021-07-31 作者:daque

一、简介形式指在字符串中探求的一定序列的字符,由反斜线包括:/def/即形式def。其用法如贯串因变量split将字符串用某形式分红多个单词:@array = split(/ /, $line);二、配合操纵符 =~、!~=~检查配合能否胜利:$result = $var =~ /abc/;若在该字符串中找到了该形式,则归来非零值,即true,不配合则归来0,即false。!~则差异。这两个操纵符适于前提遏制中,如:if ($question =~ /please/) {print ("thank you for being polite!\n");}else {print ("that was not very polite!\n");} 三、形式中的特出字符 perl在形式中扶助少许特出字符,不妨起到少许特出的效率。1、字符 + +表示着一个或多个沟通的字符,如:/de+f/指def、deef、deeeeef等。它尽管配合尽大概多的沟通字符,如/ab+/在字符串abbc中配合的将是abb,而不是ab。当一条龙中各单词间的空格多于一个时,不妨如次分隔:@array = split (/ +/, $line);注:split因变量历次遇到分隔形式,老是发端一个新单词,所以若$line以空格打头,则@array的第一个元素即为空元素。但其不妨辨别能否真有单词,假如$line中惟有空格,则@array则为空数组。且上例中tab字符被看成一个单词。提防矫正。 2、字符 []和[^][]表示着配合一组字符中的一个,如/a[0123456789]c/将配合a加数字加c的字符串。与+共同运用例:/d[ee]+f/配合def、def、deef、dedf、deeeeeeeef等。^表白除其除外的一切字符,如:/d[^dee]f/配合d加非e字符加f的字符串。3、字符 *和? 它们与+一致,辨别在乎*配合0个、1个或多个沟通字符,?配合0个或1个该字符。如/de*f/配合df、def、deeeef等;/de?f/配合df或def。4、转义字符 即使你想在形式中包括常常被看作特出意旨的字符,须在其前加斜线"\"。如:/\*+/中\*即表白字符*,而不是上头提到的一个或多个字符的含意。斜线的表白为/\\/。在perl第5中学可用字符对\q和\e来转义。5、配合大肆假名或数字 上头提到形式/a[0123456789]c/配合假名a加大肆数字加c的字符串,另一种表白本领为:/a[0-9]c/,一致的,[a-z]表白大肆小写假名,[a-z]表白大肆小写假名。大肆巨细写假名、数字的表白本领为:/[0-9a-za-z]/。6、锚形式 锚 刻画 ^ 或 \a 仅配合串首 $ 或 \z 仅配合串尾 \b 配合单词边境 \b 单词里面配合 例1:/^def/只配合以def打头的字符串,/$def/只配合以def结果的字符串,贯串起来的/^def$/只配合字符串def(?)。\a和\z在多行配合时与^和$各别。例2:检查变量名的典型:if ($varname =~ /^\$[a-za-z][_0-9a-za-z]*$/) {print ("$varname is a legal scalar variable\n");} elsif ($varname =~ /^@[a-za-z][_0-9a-za-z]*$/) {print ("$varname is a legal array variable\n");} elsif ($varname =~ /^[a-za-z][_0-9a-za-z]*$/) {print ("$varname is a legal file variable\n");} else {print ("i don't understand what $varname is.\n");}例3:\b在单词边境配合:/\bdef/配合def和defghi等以def打头的单词,但不配合abcdef。/def\b/配合def和abcdef等以def结果的单词,但不配合defghi,/\bdef\b/只配合字符串def。提防:/\bdef/可配合$defghi,由于$并不被看作是单词的局部。例4:\b在单词里面配合:/\bdef/配合abcdef等,但不配合def;/def\b/配合defghi等;/\bdef\b/配合cdefg、abcdefghi等,但不配合def,defghi,abcdef。7、形式中的变量替代 将句子分红单词:$pattern = "[\\t ]+";@words = split(/$pattern/, $line);8、字符范畴转义 e 转义字符 刻画 范畴 \d 大肆数字 [0-9] \d 除数字外的大肆字符 [^0-9] \w 大肆单词字符 [_0-9a-za-z] \w 大肆非单词字符 [^_0-9a-za-z] \s 空缺 [ \r\t\n\f] \s 非空缺 [^ \r\t\n\f] 例:/[\da-z]/配合大肆数字或小写假名。9、配合大肆字符 字符"."配合除换行外的一切字符,常常与*适用。10、配合指定命手段字符 字符对{}指定所配合字符的展示度数。如:/de{1,3}f/配合def,deef和deeef;/de{3}f/配合deeef;/de{3,}f/配合不少于3个e在d和f之间;/de{0,3}f/配合不多于3个e在d和f之间。11、指定选项 字符"|"指定两个或多个采用来配合形式。如:/def|ghi/配合def或ghi。例:检查数字表白正当性if ($number =~ /^-?\d+$|^-?0[xx][\da-fa-f]+$/) {print ("$number is a legal integer.\n");} else {print ("$number is not a legal integer.\n");}个中 ^-?\d+$ 配合十进制数字,^-?0[xx][\da-fa-f]+$ 配合十六进制数字。12、形式的局部重用 当形式中配合沟通的局部展示屡次时,可用括号括起来,用\n来屡次援用,以简化表白式:/\d{2}([\w])\d{2}\1\d{2}/ 配合:12-05-9226.11.8707 04 92等提防:/\d{2}([\w])\d{2}\1\d{2}/ 各别于/(\d{2})([\w])\1\2\1/ ,后者只配合形如17-17-17的字符串,而不配合17-05-91等。13、转义和一定字符的实行步骤 象操纵符一律,转义和一定字符也有实行步骤:特出字符 刻画 () 形式外存 + * ? {} 展示度数 ^ $ \b \b 锚 | 选项

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.