正则表达式-备忘
正则表达式-备忘
在学习java web的时候,无意之中联想到了正则表达式,很好奇是一种什么样的表达式,于是就谷歌了下。
在网上看了几家之言,对于正则表达式的大体概念是,这是一个用于检索、替换字符串的字符串操作命令。
在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。
所以,接下来便是正则表达式的语法了,区分大小写:
1、 字符:一般都为普通字符,但有一些被叫做“元字符”的特殊字符,类似于转义字符,有一些特殊的规则。可以使用反斜杠“\”可以忽略元字符,使得元字符的功能与普通字符一样。反斜杠本身也是一个元字符,这意味着反斜杠本身也可以通过相似的方法变回到普通字符的用途。
2、 点“.” :可以匹配任意一个字符。
3、 字符类:一组在方括号内的字符,表示可以匹配其中的任何一个字符。重要提示:字符类中和字符类外的规则有时不同,一些字符在字符类中是元字符,在字符类外是普通字符。一些字符正好相反。还有一些字符在字符类中和字符类外都是元字符,这要视情况而定!
4、 字符类的范围“-”:在字符集中,可以通过短横线来表示匹配字母或数字的范围。在字符集外,短横线唯一普通字符。
5、 反义符“^”:在字符类的起始位放反义符。
6、 转移字符类:\d (匹配任何一个数字,类似于[0-9]);\w (匹配任意一个数字或者字母字符,类似于[0-9A-Za-z]);\s (匹配任意一个空字符,比如空格,制表符、回车或者换行)。另外,\D \W \S 便是对应的反义了。
7、 重复{}:a{2}为aa。指定重复次数的范围,比如a{3,5}为aaa,aaaa,aaaaa
8、 关于重复的转移字符:? 表示{0,1};* 表示{0,}; + 表示{1,}
9、 非贪婪匹配:默认匹配最长字符,在居委加上一个问号之后,使得字符串重复不再匹配最长字符,而是最短字符。
10、 选择匹配“|”
11、 分组()
12、 单词分隔符\b:在文本的开头和结尾通常也有单词分隔符, 单词分隔符本身并不是字符。它们的宽度为0。
13、 换行符:^表示匹配行的开始位置;
$表示匹配行的结束位置;^&表示一个空行;
^.*& 表示匹配全文内容,因为行的开始符号也是一个字符,"."会匹配这个符号。找到单独的一行,可以使用 ^.*?$
\^\$表示匹配字符串“^$”
[$]表示匹配一个$。但是,[^]不是合法的正则表达式。记住在方括号中,字符有不同的特殊含义。要想在方括号内匹配^,必须用[\^]
与字符分隔符一样,换行符也不是字符。它们宽度为0.
14、 文本分界
在很多的正则表达式实现中,将^和$作为文本的开始符号和结束符号。还有一些实现中,用\A和\z作为文本的开始和结束符号。
15、 捕捉和替换:
使用()括号捕捉子串,捕获组从左到右编号,所以可以用左括号计数。替换:使用“\编号”,比如\3-\1-\2,这些编号分别对应于捕获组编号。
16、 反向引用:引用捕获组。如([abc])\1 表示匹配aa或者bb或者cc
具体可以参考一下链接进行学习:
http://blog.jobbole.com/63398/
http://www.jb51.net/tools/zhengze.html
以及推荐一个比较好用的正则表达式在线编辑器: