特殊字符:
1) ?^ $ * ? + {2} {2,} {2,5} |
2) [] [^] [a-z] .
3) \s \S \w \W
4) [\u4E00-\u9FA5] () \d
解釋如下:
1)? ^ 表示:以后面跟著的字符開頭
???? . 表示:任一字符
? ? * 表示:個(gè)數(shù)不限
? ? $ 表示: 以前面的字符結(jié)尾
regex_str = "^a.*3$"? 以a開頭武学,中間任意字符(不限字符個(gè)數(shù))歧寺,以3結(jié)尾的字符串
2) line = "boobby123"
(1) () 表示: 字符串提取模式,用于提取子字符串
regex_str = ".*(b.*b).*" 苦蒿,提取出來結(jié)果:bb? (默認(rèn)貪婪匹配模式,字符串從右往左匹配)
(2)? 表示:設(shè)置為非貪婪匹配模式
regex_str = ".*?(b.*b).*" ,從左邊開始一個(gè)個(gè)匹配步藕,匹配到第一個(gè)b則進(jìn)入正則匹配模式塑陵,不論中間多少個(gè)字符,遇到b則停止回右,提取出來結(jié)果:boobb(左邊部分.*?(b限定了非貪婪匹配模式,但是右邊b).*仍是貪婪匹配模式漱挚,從右往左匹配)
(3) regex_str = ".*?(b.*?b).*" 翔烁,提取出來結(jié)果:boob
3) + 表示:前面字符至少出現(xiàn)一次
regex_str = ".*(b.+b).*",前面任意字符直到遇到b旨涝,中間任一字符且出現(xiàn)且此字符至少出現(xiàn)一次蹬屹,之后再遇到b, line =
"boobaby123"提取出來結(jié)果:bab,? line = "boobaaby123"提取出來結(jié)果:baab
4) {2} 表示:前面字符出現(xiàn)2次
? ? ? {2,} 表示:前面字符出現(xiàn)2次及以上
? ? ? {2,5} 表示:前面字符出現(xiàn)2次到5次
regex_str = ".*(b.{1}b).*"白华,? line = "boobbbaaby123"提取出來結(jié)果:bbb
regex_str = ".*(b.{2}b).*"慨默,? line = "boobbbaaby123"提取出來結(jié)果:baab
regex_str = ".*(b.{3,}b).*",? line = "boobbbaaby123"提取出來結(jié)果:bbaab
regex_str = ".*(b.{2,5}b).*"弧腥,? line = "boobbbaaby123"提取出來結(jié)果:baab
5) | 表示: 或
regex_str = "(bobby |?boobby)123)"厦取,字符串等于bobby或者boobby 均符合條件,? line = "boobby123"提取出來結(jié)果:boobby
regex_str = "((bobby |?boobby)123)"管搪,? line = "boobby123" 提取第一層字符串(.group(1))出來結(jié)果:boobby123虾攻,提取第二層字符串(.group(2))出來結(jié)果:boobby
6) [] 表示:(1)滿足[]中的任一字符均可;(2)區(qū)間抛蚤;(3)[.*] 表示.台谢,表示*, 即特殊字符置于[]中則表示原意思
regex_str = "([abcd]oobby123)", 第一個(gè)字符串a(chǎn)bcd中任一均可岁经,line = "boobby123"提取出來結(jié)果:boobby123朋沮,line = "eoobby123"提取不出來
regex_str = "(1[48357][0-9]{9})",以1開頭缀壤,第二個(gè)字符[48357]中任一均可樊拓,后面的字符[0-9]中任一均可,但必須出現(xiàn)9次 (PS:手機(jī)號(hào)碼匹配模式)
regex_str = "(1[48357][^1]{9})"塘慕,以1開頭筋夏,第二個(gè)字符[48357]中任一均可,后面的字符為1以外字符([^1] 非1)图呢,但必須出現(xiàn)9次
7) \s \S
regex_str = "(你\s好)"条篷, 表示: 你好之間存在空格
regex_str = "(你\S好)"骗随, 表示: 你好之間存在一個(gè)字符,且該字符不是空格
regex_str = "(你\S+好)"赴叹, 表示: 你好之間存在至少一個(gè)字符鸿染,且該字符不是空格