摘要:
正则表达式中,括号是用来捕捉匹配上的字符,并把它们存入变量中,那只想用括号将某部分进行分组,该怎么办呢?只需要在开括号后面添加?:两个字符即可,如:if(/(?:bronto)?saurus (steak|burger)/){print “Fred wants a $1\n”;}则匹配上(steak|burger)的字符会被放到变量$1中 阅读全文
摘要:
例子:假设在fred and barney went bowling last night 上使用/fred.+barney/进行匹配。我们知道正则表达式将匹配上,下面我们具体的讲解这一个过程:首先,子模式fred 将匹配其对应的字符串。模式的下一部分是.+,它将匹配除了换行符之外的任意字符,次数大于等于一。但,由于加号(+)是贪婪的;它将尽可能的进行匹配。因此,它将匹配剩余的所有字符串,包括ni... 阅读全文
摘要:
通常,正则表达式是针对单行文本的。由于Perl 可以处理任意长度的字符串,因此,Perl 的模式可以轻易的对多行文本进行匹配,就像单行文本一样。当然,表达式中应当包含多行文本。下面的字符串中有4 行:$_ =“I’am much better\nthan Barney is\nat bowling,\nWilma,\n”;锚定^和$是指整个字符串的开头和结束,加强了理解,^和$指的是字符串的首和尾... 阅读全文
摘要:
很多时候,我们希望对原有文件的内容进行一定的修改,linux虽然有sed这个强大的文本编辑命令,但是他只能生成新文件或打印到screen上(或许sed也具有修改原文件的功能,小的才疏学浅,尚不知道,烦请大家告诉我),但在perl里却有这么一个命令$^I例子:#!/usr/bin/perluse strict; $^I="";while(){ s/^rate.*/rate=0/; ... 阅读全文