一个神奇高效的工具-正则表达式(一)

什么是正则表达式

正则表达式是用来匹配和处理文本的字符串,是用正则表达式语言创建的。一般使用正则表达式的场景无外乎两个:
* 查找特定的信息(搜索)
* 查找并编辑特定的信息(替换)

即搜索和替换

正则表达式并不是一种完备的语言,他是内置在其他语言中的“迷你”的语言,我们可以把它看作是一个工具,一个神奇并且高效的工具。

如何学习正则表达式

我们说正则表达式是一门“语言”,那么一门语言就一定有属于它的“语法”。学习正则表达式,需要学习它的语法,这是基础和根本,但是正则表达式真正的难度在于如何在合适的场景用所学的语法(合适的语法,因为学习了正则表达式之后,很多问题会有很多种方法去解决,有的兼容性好,有的简单,有的比较快达成,那么问题如何去寻找最合适的方法,往往是需要很多的实践和尝试的)。学以致用,实践是检验真理的唯一标准,所以,大家在日常的编程工作中,一定要去敢于使用正则表达式,不断的锻炼自己,正如某位前辈曾经说的:

当一个问题,你决定使用正则表达式来解决的时候,很好,那么你现在面临的是两个问题了

匹配

无论是查找还是替换,最先要做到也是最基本的,就是匹配你想要处理的内容,匹配全了,我们的查找才能全面,替换才能准确,匹配不到所有的内容或者匹配的内容不仅仅包括你的目标,那么都会成为一个错误的使用。

纯文本匹配

日常我们在使用编辑器时,最常用的就是使用纯文本进行匹配:

welcome to guangzhou

如果想要找到所有的guangzhou,那么只需要使用“guangzhou”进行匹配即可
那么如果你在输入匹配内容的时候,并不知道文章中的guang zhou是否存在大写字母,如果你是入了”GuangZhou”,上面的内容还能匹配到吗?答案是否,正则表达式是对大小写敏感的“语言”(某些环境下,可以使用例如i的选项来ignore大小写),但是正则表达式的很多技巧,都可以完美的解决这个问题,这个我们在接下来的内容中,会详细的进行介绍

任意字符的匹配

正则表达式的神奇,绝对不是体现在纯文本的匹配呀!下面我们来介绍他的七十二般变化之一-如何体现任意字符的匹配。

I am in class-1
Li ming is in class-4
My brother is in class-7

我们如何在以上文本中,找出所有的班级的集合呢?正则表达式中有一个符号,可以匹配任意的字符:

符号 .

所以我们只需要输入匹配文本:

模式:class-.

就可以成功的匹配到文本中的所有班级信息(有心的同学,应该注意到,如果班级不止一位数,这个匹配的样式还可行吗?可以思考一下)

如何匹配.

接着上面的内容,我们领略到了”.”的强大,那么,如果我们的待匹配文本中,我们需要匹配它本身,应该怎么做呢?我们应该告诉处理器,我们要找它本人

2.4 
214

如果我们要匹配数字2.4,你需要在.前面增加一个\(反斜杠,\是一个元字符,表示它后面的字符有特殊的含义,不是他本身的含义(本身含义即为匹配任意字符))

模式:2\.4

哈哈,有时候”\”也身不由己,需要匹配他自身的时候:

模式:\\

总结

模式(正则表达式简称)可以由纯文本或者一些元字符组成,元字符前增加\,可以匹配它本身

我的个人博客,欢迎拍砖:codingsj.com

你可能感兴趣的:(linux,shell,正则表达式)