摘要:
最近,由于要学习字符串的相关知识,所以搜索了一些网络上有关正则表达式的学习笔记来学习,收获很多,在此对正则表达式的相关知识做一点小小的总结
在字符串匹配当中,有时我们并不想将两个确定的字符串进行匹配,而是使用已有的字符串和已经储存的字符串模式进行匹配,所以这就使用到了正则表达式,那么正则表达式的基本组成有:
A.单个的字符:字符串的基本组成元素
B.字符串的集合和操作符
C.选择符号
D.用来匹配子模式的括号
E.量词记号
正则表达式基本组成
1.匹配符号“.”(dot)
在正则表达式中,”.”可以代表任意一个字符,比如下面的例子
a.bbbass
即确定了匹配模式中的第二个字符可以是任何一个字符
2.字符集合
当我们在某个位置上所要匹配的字符不止一个时,即可以使用字符集合来表示,如下面的例子
[Hh]ello
则这个模式串既可以匹配hello,也可以匹配Hello
另外还有下面的几种表示方式:
[a-z]表示英文小写字母
[^a-z]除了英文小写字母,”^” 相当于取非
特殊情况:当字符集合中存在“]”时,必须将其放在“[”右边第一个的位置,否则匹配可能会发生错误
3.量词
我们使用量词表示一个字符允许出现的次数,比如
? : 这个字符可以出现或不出现
* : 这个字符可以出现一次或多次
+ : 这个字符至少出现一次
则我们根据上面的知识可以知道一种操作符的组合,
.*即为能够匹配任意字符串的模式串
4.交替
有的时候,我们在一个位置上允许完全不相关的字符串出现,则我们可以直接使用”|”符号来直接进行枚举,这则符号即表示逻辑or,如下面的这个模式字符串:
HELLO|hello
5.开始和结束符
有的时候,我们不仅需要字符串存在某种模式,我们还希望其开头和结尾按照某种模式进行编码,这个时候,我们使用”
6.转义字符”\”
以上我们介绍了很多关键字符,但是,当匹配的字符串中恰恰含有他们的时候,如果不加处理,很多模式便会产生二义性.为了避免这种情况的发生,我们使用转移字符”\”来取消他们的关键意义,是模式串无论何时都有唯一的意义,同时通过转义字符,我们也能方便的得出很多字符集合,方便我们简化正则表达式
7.匹配模式子串
在以前的数学中,我们可以感觉到圆括号的重要性,比如下面的
2+5×3 =18
(2+5)×3 =21
这个时候,我们使用圆括号就变得十分有必要了,比如:
china(hello|Hello)?haha
这样就对括号中的字符串做到了很大的处理
以上就是正则表达式的基本教程,如果想要进阶的话,我们可以多在编程中应用这种技术,再看一些开发文档,才能有所进步
参考文件:
1.http://www.beedub.com/book/3rd/regexp.pdf
2.http://www.lunametrics.com/regex-book/Regular-Expressions-Google-Analytics.pdf