一,提取文本信息
egrep是返回的是匹配的位置,而不是匹配字符串本身。egrep返回在检查正则表达式之前会把换行符给去掉
如果是匹配一些与元字符相同的字符,但是要使他没有特殊意义,则要用""放在这些字符的前面,才能表示一般含义
^pepple --表示匹配以people行开头的 $people---表示匹配以people行开头的 [^....]----匹配除括号内容里以外的
元字符:"." 可以匹配任意字符的字符组简写 如要匹配09-02-1或09.02.1或09/02/01
正则表达式 “09[- . /]02[- . /]01” 其中[- . /]这里面的符号不是元字符,因为在字符组内部
正则表达式 “09.02.01”这和上面的正则表达式一个意思,此时的“.”表示元字符,能匹配任意字符
“|”表示或的意思
例如:gr(e|a)y即可匹配grey 又可以匹配gray
egrep的命令参数行“-i”表示进行忽略大小写的匹配
egrep-i"^(From|subject|date):" -i写在正则表达式的前面
egrep "/<"匹配的是单词的开头,“/>”匹配单词的结尾:期望匹配的单词在在另一个但这次之中
egrep“/<cat/>”以cat开始 并以cat结尾结尾的单词,
?表示可选项
例如匹配color和colour的匹配,可写成“(colou?r)” 这个u是可选或者可不选
s 表示空白字符
+ 表示紧邻的元素出现一次或多次,* 表示之前紧邻的元素出现任意多次或者不出现
例如:匹配14
可用 "[0-9]+"
括号及反向应用
括号的三种用途:1)限制多选项的范围 2)将若干字符组合为一个单元,受问号或星号之类量词的作用 3)用于反向引用
egrep的反向引用
例如:我们要匹配一个任意的单词,接下来要检查后面的单词是否和它一样
正则表达式:<([A-Za-z]+)*+1> 表示的以第一个匹配的单词开始,到最后一个出现和第一个单词一样的单词结束。 "1" "2" "3"等来表示第一,第二,第三组括号匹配的文本。
“([a-z])([0-9])12”。括号是按照开括号“(”从左至右的出现顺序进行的,所以1([a-z]) 代表2([0-9])
perl中 $var=~m/..../ ~m表示开始匹配的意思,m(match)
二,替换文本信息(perl)
在perl 中 $var=~s/.../.../ 可以改变 $var中的文本
eg:$var=~s/Jeff/Jeffery/i ; 讲文中的jeff单词替换为Jeffery,忽略单词的大小写
/gs是一个全局替换
当有时候我们需要得到一个修正的浮点数的时候,$price=表示修正的数
$price=~s/(.dd[1-9]?d*)/$1/
用$1来替代修饰前面所匹配的数,修饰的结果是如果第三位是0,小数后面就保留两位,小数后第三位是非0,就保留三位,后面的数不要
.* 表示用来表示一组任何字符
R grep, grepl, regexpr, gregexpr:http://blog.csdn.net/duqi_yc/article/details/9817243