一、引言
正则表达式是含有文本和特别字符的字符串,这些文本和特别字符描述的模式可以识别各种字符串。
正则表达式的强大之处在于特殊符号的应用,特殊符号定义了字符集合、子组匹配,模式重复次数。。。正是这些特殊符号是的一个正则表达式可以匹配字符串集合而不是一个字符串
二、特殊符号和字符
1.用管道(|)符号匹配多个正则表达式模式
例子》bat|bet|bit 匹配:bat、bet、bit
2.匹配任意一个单个的字符(.)
点字符(.)匹配除去换行符以外的任意一个单一字符
例子:f.o 匹配f和o之间的任何字符:foo、fro、f#o
.end 匹配在字符串end前面的任意一个字符
注意;如何匹配句号或句号:必须使用‘\’进行转义
3、从字符串的开头或者结尾或者单词边界开始匹配(^/$/\b/\B)
例子:^From 匹配任何以From开始的字符串
end$ 匹配任何以end结束的字符串
如果你想匹配这两个字符中的任何一个 你都要使用反斜杠进行转义:“\$$”
\b and \B用来匹配单词边界。\b匹配的是一个单词边界,与之对应的一定在一个模式一定在一个单词的开头,不论这个单词前面是否有字符串。\B匹配出现在一个单词中间的模式
例子: \bthe 匹配任何以‘the’开始的字符串
\bthe\b 仅仅匹配the
\Bthe 任意包含‘the’但是不以‘the’开头
4、创建字符类( [ ] )
b[aeiu]t 匹配 bat,bet,bit,but
[cr][23][o2];匹配第一个字符是c或者r,第二是2或者3.。。
5、指定范围(-)和否定(^)
在[]中一对符号中间的连字符(-)表示一个字符的范围:例如A-Z,0-9.另外如果在左括号上加一个(^)表示不匹配指定的字符集里的任意字符
例子 z.[0-9] 匹配字符‘z’,加任意字符,然后是一个十进制数字
[r-u][abn-y][us]
[^abc] 不匹配abc
6.使用闭包操作符(*,+,?,{})实现多次出现、重复匹配
*:匹配他左边的那个正则表达式出现零次或者零次以上
+:匹配他左边的那个正则表达式至少出现一次
?:匹配他左边的那个正则表达式出现零次或者一次
{}:花括号内可以使单个值也可以是一对值:
{N}:表示匹配N次出现 {M,N}:表示匹配M次到N次出现
例子:[dn]ot?: do,no,dot,not
[0-9]{17,18} 表示17或者18位的数字表示
</?[^>]+> 匹配所有合法的HTML字符串
7、特殊字符表示、字符集
‘\d’可以表示0-9这个范围的十进制数字,
‘\w’表示整个字符数字的数字集相当于“A-Za-z0-9"的简写 "\s"表示空白字符 这个字符的大写表示不匹配
例子:
\w+-\d+ 一个有字母或数字组成的字符串,两部分中间有连字符连接
\w+@\w+.com 类似 XXX@yyy。com
8、用圆括号组建组
一个圆括号和一个正则表达式在一起时可以实现以下任意一个(两个)功能:
a.对正则表达式进行分组
b.匹配子组