当前位置: 首页 > news >正文

衡水大型网站建设中国门户网站有哪些

衡水大型网站建设,中国门户网站有哪些,百度的官方网站,做网站需要学习哪些一般使用ultraedit中的Perl风格的正则表达式#xff0c;下面是perl正则的基本语法 perl中的元字符如下#xff1a; ^ 表示一行的开头#xff1b; $ 表示一行的结尾#xff1b; ( ) 表示一个匹配块的#xff0c;可以对匹配上的块通过$1,$2...进行读取#xff0c;… 一般使用ultraedit中的Perl风格的正则表达式下面是perl正则的基本语法 perl中的元字符如下 ^    表示一行的开头 $     表示一行的结尾 ( )   表示一个匹配块的可以对匹配上的块通过$1,$2...进行读取但是无法写$0表示这个perl文件 /     表示用来进行转义的意思比如/n表示换行符 |     表示perl进行匹配时的或者逻辑rank比较低 表示一个数组的值 [     表示[]的含义 {    表示{}整个模式的含义 ?    表示前面字符出现1次或者0次 .     表示任意字符除了/n换行符如果加上/s进行修饰则/n都能被匹配 表示前面字符至少出现一次 *    表示前面字符至少出现0次 一、简介 二、匹配操作符 三、模式中的特殊字符 1、字符 2、字符 []和[^] 3、字符 *和? 4、转义字符 5、匹配任意字母或数字 6、锚模式 7、模式中的变量替换 8、字符范围转义前缀 9、匹配任意字符 10、匹配指定数目的字符 11、指定选项 12、模式的部分重用 13、转义和特定字符的执行次序 14、指定模式定界符 15、模式次序变量 四、模式匹配选项 1、匹配所有可能的模式(g选项) 2、忽略大小写(i选项)例 3、将字符串看作多行(m选项) 4、只执行一次变量替换例 5、将字符串看作单行例 6、在模式中忽略空格 五、替换操作符 六、翻译操作符 七、扩展模式匹配 1、不存贮括号内的匹配内容 2、内嵌模式选项 3、肯定的和否定的预见匹配 4、模式注释 八、 注意贪婪性 九、正则表达式的返回值 一、简介 模式指在字符串中寻找的特定序列的字符由反斜线包含/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个该字符告诉引擎匹配前导字符1次或多次。如/de*f/匹配df、def、deeeef等/de?f/匹配df或def。 4、转义字符如果你想在模式中包含通常被看作特殊意义的字符须在其前加斜线\。如/\* /中\*即表示字符*而不是上面提到的一个或多个字符的含义。斜线的表示为/\\/。在PERL5中可用字符对\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 dont 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-92 26.11.87 07 04 92等 注意/\d{2}([\W])\d{2}\1\d{2}/ 不同于/(\d{2})([\W])\1\2\1/ 后者只匹配形如17-17-17的字符串而不匹配17-05-91等。 在/\d{2}([\W])\d{2}\1\d{2}/中\1代表([\W]) 而在/(\d{2})([\W])\1\2\1/中\1代表(\d{2})\2代表([\W])。 13、转义和特定字符的执行次序 象操作符一样转义和特定字符也有执行次序 特殊字符 描述 () 模式内存 可以在后面使用\n来使用。 * ? {} 出现次数 ^ $ \b \B 锚 | 选项 14、指定模式定界符 缺省的模式定界符为反斜线/但其可用字母m自行指定如 m!/u/jqpublic/perl/prog1! 等价于/\/u\/jqpublic\/perl\/prog1/ 注当用字母作为定界符时不做变量替换当用特殊字符作为定界符时其转义功能或特殊功能即不能使用。 15、模式次序变量在模式匹配后调用重用部分的结果可用变量$n全部的结果用变量$。$string This string contains the number 25.11.;$string ~ /-?(\d )\.?(\d )/; # 匹配结果为25.11$integerpart $1; # now $integerpart 25$decimalpart $2; # now $decimalpart 11$totalpart $; # now totalpart 25.11 实例 $lastLabel ~ /$LabelLetter((\d\d\d)(\.\d\d\d)?)([a-z]?)/i # Ex: for 031.100A # $1 031.100, $2 031, $3 .100, $4 A 四、模式匹配选项选项 描述g 匹配所有可能的模式i 忽略大小写m 将串视为多行o 只赋值一次s 将串视为单行x 忽略模式中的空白1、匹配所有可能的模式(g选项)matches balata ~ /.a/g; # now matches (ba, la, ta)匹配的循环while (balata ~ /.a/g) {$match $;print ($match\n);}结果为balata当使用了选项g时可用函数pos来控制下次匹配的偏移$offset pos($string);pos($string) $newoffset; 2、忽略大小写(i选项)例/de/i 匹配de,dE,De和DE。 3、将字符串看作多行(m选项)在此情况下^符号匹配字符串的起始或新的一行的起始$符号匹配任意行的末尾。 4、只执行一次变量替换例$var 1;$line ;while ($var 10) {$result $line ~ /$var/o;$line ;$var ;}每次均匹配/1/。 5、将字符串看作单行例/a.*bc/s匹配字符串axxxxx \nxxxxbc但/a.*bc/则不匹配该字符串。 6、在模式中忽略空格/\d{2} ([\W]) \d{2} \1 \d{2}/x等价于/\d{2}([\W])\d{2}\1\d{2}/。 五、替换操作符语法为s/pattern/replacement/其效果为将字符串中与pattern匹配的部分换成replacement。如$string abc123def;$string ~ s/123/456/; # now $string abc456def;在替换部分可使用模式次序变量$n如s/(\d )/[$1]/但在替换部分不支持模式的特殊字符如{},*, 等如s/abc/[def]/将把abc替换为[def]。替换操作符的选项如下表选项 描述g 改变模式中的所有匹配i 忽略模式中的大小写e 替换字符串作为表达式m 将待匹配串视为多行o 仅赋值一次s 将待匹配串视为单行x 忽略模式中的空白注e选项把替换部分的字符串看作表达式在替换之前先计算其值如$string 0abc1;$string ~ s/[a-zA-Z] /$ x 2/e; # now $string 0abcabc1 六、翻译操作符这是另一种替换方式语法如tr/string1/string2/。同样string2为替换部分但其效果是把string1中的第一个字符替换 为string2中的第一个字符把string1中的第二个字符替换为string2中的第二个字符依此类推。如$string abcdefghicba;$string ~ tr/abc/def/; # now string defdefghifed当string1比string2长时其多余字符替换为string2的最后一个字符当string1中同一个字符出现多次时将使用第一个替换字符。翻译操作符的选项如下选项 描述c 翻译所有未指定字符d 删除所有指定字符s 把多个相同的输出字符缩成一个如$string ~ tr/\d/ /c;把所有非数字字符替换为空格。$string ~ tr/\t //d删除tab和空格 $string ~ tr/0-9/ /cs把数字间的其它字符替换为一个空格。七、扩展模式匹配PERL支持PERL4和标准UNIX模式匹配操作所没有的一些模式匹配能力。其语法为(?pattern)其中c是一个字符pattern是起作用的模式或子模式。1、不存贮括号内的匹配内容在PERL的模式中括号内的子模式将存贮在内存中此功能即取消存贮该括号内的匹配内容如/(?:a|b|c)(d|e)f\1/中的\1表示已匹配的d或e而不是a或b或c。2、内嵌模式选项通常模式选项置于其后有四个选项i、m、s、x可以内嵌使用语法为/(?option)pattern/等价于/pattern/option。3、肯定的和否定的预见匹配肯定的预见匹配语法为/pattern(?string)/其意义为匹配后面为string的模式相反的(?!string)意义为匹配后面非string的模式如$string 25abc8;$string ~ /abc(?[0-9])/;$matched $; # $为已匹配的模式此处为abc而不是abc84、模式注释PERL5中可以在模式中用?#来加注释如if ($string ~ /(?i)[a-z]{2,3}(?# match two or three alphabetic characters)/ {...} 八、 注意贪婪性 假设你想用一个正则表达式匹配一个HTML标签。你知道输入将会是一个有效的HTML文件因此正则表达式不需要排除那些无效的标签。所以如果是在两个尖括号之间的内容就应该是一个HTML标签。 许多正则表达式的新手会首先想到用正则表达式 . 他们会很惊讶的发现对于测试字符串“This is a EMfirst/EM test”你可能期望会返回EM然后继续进行匹配的时候返回/EM。 但事实是不会。正则表达式将会匹配“EMfirst/EM”。很显然这不是我们想要的结果。原因在于“”是贪婪的。也就是说“”会导致正则表达式引擎试图尽可能的重复前导字符。只有当这种重复会引起整个正则表达式匹配失败的情况下引擎会进行回溯。也就是说它会放弃最后一次的“重复”然后处理正则表达式余下的部分。 和“”类似“?*”的重复也是贪婪的。 用懒惰性取代贪婪性 一个用于修正以上问题的可能方案是用“”的惰性代替贪婪性。你可以在“”后面紧跟一个问号“?”来达到这一点。“*”“{}”和“?”表示的重复也可以用这个方案。因此在上面的例子中我们可以使用“.?”。让我们再来看看正则表达式引擎的处理过程。 再一次正则表达式记号“”会匹配字符串的第一个“”。下一个正则记号是“.”。这次是一个懒惰的“”来重复上一个字符。这告诉正则引擎尽可能少的重复上一个字符。因此引擎匹配“.”和字符“E”然后用“”匹配“M”结果失败了。引擎会进行回溯和上一个例子不同因为是惰性重复所以引擎是扩展惰性重复而不是减少于是“.”现在被扩展为“EM”。引擎继续匹配下一个记号“”。这次得到了一个成功匹配。引擎于是报告“EM”是一个成功的匹配。整个过程大致如此。 惰性扩展的一个替代方案 我们还有一个更好的替代方案。可以用一个贪婪重复与一个取反字符集“[^]”。 九、正则表达式的返回值 正则表达式匹配后返回的为数组或长度取决于表达式中是否有或者接收的变量类型 $a  RRR3ttt; yy  $a~/RRR.*ttt/; $numofyy  $a~/RRR.*ttt/; print yy\n; print $numofyy\n ; yy2  $a~/(RRR).*(ttt)/; $numofyy2  $a~/(RRR).*(ttt)/; print yy2\n; print $numofyy2\n; print $1 $2; 结果 1 1 RRR ttt 1 RRR ttt
http://www.pierceye.com/news/850454/

相关文章:

  • 国家建设环保局网站网站做的好赚钱吗
  • 如何设置网站服务器做标签的网站
  • 网站建设高端培训学校做网站交易平台
  • 公司网站建设收费优化网站排名解析推广
  • 昆明快速建站模板汽车网站建设多少钱
  • 网站注销主体注销广州联享网站建设公司怎么样
  • 中山seo建站新手建站教程报价单
  • 台州制作网站软件陈坤做直播在哪个网站
  • 北湖区网站建设公司企业主题wordpress 含演示数据
  • 网站建设简历自我评价做招聘信息的网站有哪些内容
  • 怎么和其它网站做友情链接网络营销师证怎么考
  • 百度推广要自己做网站吗做的视频传到哪个网站好
  • 个人建设门户网站 如何备案网站推广服务报价表
  • 广州企业网站建设哪家服务好西安家政公司网站建设
  • 住房与城乡建设部网站 黑龙江wordpress 采集系统
  • 阜阳网站建设云平台玉溪建设局门户网站
  • 网站建设什么原因最主要怎么制作网站首页
  • 网站建设深圳赶集网网页设计工程师工资
  • 哪家企业网站建设好闵行区网站制作
  • 重庆行业网站建设陕西省建设监理协会查询官方网站
  • 手机网站 尺寸网站规划的认识
  • 永川网站制作联系电话wordpress 参数 传递
  • 西宁市网站建设高端网站开发人员要求
  • 前端做商城网站需要多久yum wordpress
  • 便宜网站建设成都免费建网站视频教程
  • 班级网站自助建设功能没有充值入口的传奇
  • 杭州网站seo免费网站建设
  • 好看的网站设计网站开发龙岗网站建设
  • 物流如何做网站wordpress qq互联插件
  • 权威发布李建济南做seo排名