正则表达式(2)

 一,提取文本信息

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

原文地址:https://www.cnblogs.com/yupeter007/p/5493306.html