正则表达式

正则表达式概念
       正则表达式是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的的工具。通俗的说,就是在描述某个事物时,通过描述它具有的特征来将它描述起来,有的特征是可以精确的描述出来,但是对于有的特征,每个人心中可能会有不同衡量。
        比如说我们在描述一个人的时候,性别,身高,体重之类的是可以精确描述的,但是,在描述他的肤色的时候,就不能做到精确了,毕竟我们在描述一个人的时候不可能说把他的肤色色号给说出来,然后听到的人再去拿个标准比色卡来比对确定是哪个颜色。我们一般说的就是类似挺白的、略黑等类似的词语,而每个人对黑和白的界限可能不一样。我们用于描述一个人的这些话其实就是一个正则表达式。怎么用正则表达式来描述一个字符串呢?字符串的组成无非就是一个个字符,将这些字符的特征描述出来了不就OK了。
正则表达式的三要素(字符类、数量限定符、位置限定符)
正则表达式
下边来举几个例子验证并熟悉一下以上几个字符。在此之前先简单介绍一下grep工具,grep工具是用于匹配字符串的,它的选项有-E --color -P.
--color是用于将成功匹配到的字符高亮显示
grep有三种模式:普通模式(Basic)、扩展模式(Extend)和Perl模式
-E 表示使用grep的Extend模式,默认是Basic模式的
-P 表示使用grep的Perl模式
正则表达式
正则表达式
正则表达式
正则表达式
正则表达式

正则表达式
正则表达式
零宽断言
      断言用来声明一个应该为真的事实。正则表达式中只有当断言为真时才会继续进行匹配。 接下来的四个用于查找在
某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b,^,$ 那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。也就是说通过某个类似于标志的东西找到某个位置,然后再从这个位置做正则匹配。
听起来不太好理解,直接看例子~

(?=exp)也叫零宽度正预测先行断言:(名字啥的可以忽略?)
它断言自身出现的位置的后面能匹配表达式exp。
比如\b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分)。首先在一个字符串中找有没有以ing结尾的单词出现,如果没有,什么都不干了,如果有,则断言成功,那么该单词ing前边的内容匹配成功
正则表达式
(?<=exp)也叫零宽度正回顾后发断言:
它断言自身出现的位置的前面能匹配表达式exp。
比如(?<=\bre)\w+\b会匹配以re开头的单词的后半部。首先在一个字符串中找有没有以re开头的单词,如果没有就什么都不做,如果有,断言成功,则将以re开头的单词除了re外的字符输出
分(除了re以外的部分),例如在查找reading a book时,它匹配ading。
正则表达式