. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符,包含空格、换行、回车,多个空格就是空白
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
[a-z] 指定a到z的任一字母
[0-9] 指定0到9的任一数字
[\u4e00-\u9fa5] 代表汉字,4e00代表中国第一个汉字的编码,9fa5代表最后一个
[asz] 指a,s,z三个字符中取任意一个字符
* 表示重复零次或更多次(零次以上包含零次)
+ 表示重复一次或更多次(一次以上包含一次)
? 表示重复零或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
关联:
.* 连在一起就意味着任意数量的不包含换行的字符
*? 重复任意次,但尽可能少重复,如"acbacb"正则"a.*?b"只会取到第一个"acb",原本可以全部取到,但加了限定符后,只会匹配尽可能少的字符,而"acbacb"最少字符的结果就是"acb"
+? 重复一次或更多次,但尽可能少重复,与上面一样,只是至少要重复一次
?? 重复0次或1次,但尽可能少重复,如"aaacb"正则"a.??b"只会取到最后的三个字符"acb"
{n,m}? 重复n到m次,但尽可能少重复,如"aaaaaaaa"正则"a{0,m}",因为最少是0次,所以取到结果为空
{n,}? 重复n次以上,但尽可能少重复,如"aaaaaaaa"正则"a{1,}",因为最少是1次,所以取到结果为"a"
正则表达式:a* *代表0次或更多次,优先匹配多次
源文本:asdaadaaaeaw
结果:a aa aaa a ,共10位,aa是一位,aaa是一位,最后的a后面有两个空格,s,d等匹配不上就匹配空白,默认会多出一个空白
正则表达式:a+ +代表一次或更多次,优先匹配多次
源文本:asdaadaaaeaw
结果:a aa aaa a,共4位,4个加粗的,没有空格
正则表达式:a? ?代表零次或一次,要么一个要么零个,空格和a都有
源文本:asdaadaaaeaw
结果:a aa aaa a ,共13位,第一个a和aa中间有两个空格,最后的a后面有两个空格,aa是上下排列,aaa也是上下排列
正则表达式:a*? *?代表零次或更多次,优先匹配零次
源文本:asdaadaaaeaw
结果:13个空格,上下排列
正则表达式:a+? +?代表一次或更多次,优先匹配一次
源文本:asdaadaaaeaw
结果:7个a,上下排列
正则表达式:a?? ??重复零次或一次,尽可能少重复
源文本:asdaadaaaeaw
结果:13个空格,上下排列
正则表达式:aa*?b
源文本:abaabaseb
结果:ab和aab,上下排列