一直对正则表达式云里雾里的,今天认真的看了《鸟哥的linux私房菜》一书并在网络上查询了相关方面的资料,现在对正则表达式有了一定的了解。
首先正则表达式指的是用特定的字符串来筛选符合一定要求的字符串,我们在Linux系统下经常用到的命令grep,这个命令时用来选取符合一定要求的字符串所在的一行,其实这个很简单,举个简单的例子,我们想在某个目录下去查找一下是否存在newfile这个文件,我们可以使用管道命令,ls | grep newfile,这个就可以找到我们想要的文件是否存在。那么假设我们想寻找一下某个目录下是否存在开头为newfile的文件时,我们可以使用 “ls | grep '^newfile'”来实现,^的作用就是行首的标记,指的是行首位newfile的行取出来。既然可以规定行首的字符,当然也可以规定行尾的字符了,行尾用什么来标记呢?是$,比如我们要找行尾为newfile的行,可以这样给出命令,ls | grep 'newfile$',这样就很清楚了。
那么正则表达式还有什么值得学习的呢?如*,这里的*和bash环境下使用的代表0-无数个字符的通配符是不一样的,这里的*指的是0-无数个重复前一个字符的字符串,例如我们想在expand.txt文件中寻找是否存在着g开头,g结尾,中间存在着0个或者几个o的这样的字符串,我们该怎么给出命令呢,这时候我们就可以利用*这样的字符了,grep -n 'go*g' expand.txt,这样我们便能找到符合要求的字符串了。
关于正则表达式,我们还要使用如[a-zA-Z],这个代表的是英文字符中的某一个;还有^[^a-zA-Z],这个^在[]内外是有区别的,在外面表示的是行首,在里面表示的是反选,所以这表示的是行首开头不是英文字符的行;还有.指的是一个字符;
当然正则表达式学习的东西还有很多。。。。。。