特殊字符:
1) ^ $ * ? + {2} {2,} {2,5} |
2) [] [^] [a-z] .
3) \s \S \w \W
4) [\u4E00-\u9FA5] () \d
解释如下:
1) ^ 表示:以后面跟着的字符开头
. 表示:任一字符
* 表示:个数不限
$ 表示: 以前面的字符结尾
regex_str = "^a.*3$" 以a开头,中间任意字符(不限字符个数),以3结尾的字符串
2) line = "boobby123"
(1) () 表示: 字符串提取模式,用于提取子字符串
regex_str = ".*(b.*b).*" ,提取出来结果:bb (默认贪婪匹配模式,字符串从右往左匹配)
(2)? 表示:设置为非贪婪匹配模式
regex_str = ".*?(b.*b).*" ,从左边开始一个个匹配,匹配到第一个b则进入正则匹配模式,不论中间多少个字符,遇到b则停止,提取出来结果:boobb(左边部分.*?(b限定了非贪婪匹配模式,但是右边b).*仍是贪婪匹配模式,从右往左匹配)
(3) regex_str = ".*?(b.*?b).*" ,提取出来结果:boob
3) + 表示:前面字符至少出现一次
regex_str = ".*(b.+b).*",前面任意字符直到遇到b,中间任一字符且出现且此字符至少出现一次,之后再遇到b, line =
"boobaby123"提取出来结果:bab, line = "boobaaby123"提取出来结果:baab
4) {2} 表示:前面字符出现2次
{2,} 表示:前面字符出现2次及以上
{2,5} 表示:前面字符出现2次到5次
regex_str = ".*(b.{1}b).*", line = "boobbbaaby123"提取出来结果:bbb
regex_str = ".*(b.{2}b).*", line = "boobbbaaby123"提取出来结果:baab
regex_str = ".*(b.{3,}b).*", line = "boobbbaaby123"提取出来结果:bbaab
regex_str = ".*(b.{2,5}b).*", line = "boobbbaaby123"提取出来结果:baab
5) | 表示: 或
regex_str = "(bobby | boobby)123)",字符串等于bobby或者boobby 均符合条件, line = "boobby123"提取出来结果:boobby
regex_str = "((bobby | boobby)123)", line = "boobby123" 提取第一层字符串(.group(1))出来结果:boobby123,提取第二层字符串(.group(2))出来结果:boobby
6) [] 表示:(1)满足[]中的任一字符均可;(2)区间;(3)[.*] 表示.,表示*, 即特殊字符置于[]中则表示原意思
regex_str = "([abcd]oobby123)", 第一个字符串abcd中任一均可,line = "boobby123"提取出来结果:boobby123,line = "eoobby123"提取不出来
regex_str = "(1[48357][0-9]{9})",以1开头,第二个字符[48357]中任一均可,后面的字符[0-9]中任一均可,但必须出现9次 (PS:手机号码匹配模式)
regex_str = "(1[48357][^1]{9})",以1开头,第二个字符[48357]中任一均可,后面的字符为1以外字符([^1] 非1),但必须出现9次
7) \s \S
regex_str = "(你\s好)", 表示: 你好之间存在空格
regex_str = "(你\S好)", 表示: 你好之间存在一个字符,且该字符不是空格
regex_str = "(你\S+好)", 表示: 你好之间存在至少一个字符,且该字符不是空格