1.特殊字符
(1)^$*+?{2}{2,}{2,5}|
^ 限定開(kāi)頭字符
$ 限定結(jié)尾字符
- 前面字符出現(xiàn)任意多次(包括0次)
- 至少匹配1次
? 非貪婪匹配模式(默認(rèn)情況下是貪婪匹配厕氨,反向匹配钻注,從最后往最前面匹配)很常用硕淑。
{2} 限定前面字符出現(xiàn)的次數(shù)
{2栏笆,}限定前面字符出現(xiàn)2次及以上
{2,5}限定前面字符出現(xiàn)至少2次奕筐,最多5次
| 邏輯或
(2)[][^][a-z].
[] 匹配括號(hào)中的任何一個(gè)
[^] 不等于
[a-z]匹配括號(hào)里的區(qū)間字符,模式匹配中很常見(jiàn)
. 一個(gè)字符黔龟,包含所有的字符(包括\w和\W)
(3)\s\S\w\W
\s 空格
\S 非空格
\w 任意字符[A-za-z0-9_]
\W 非任意字符
(4)[\u4E00-\u9FA5])()\d
[\u4E00-\u9FA5] 匹配連續(xù)漢字
() 可以用match_obj.group(1)獲取第一組括號(hào)里的內(nèi)容攘残,提取子字符串的時(shí)候非常常用
\d 匹配數(shù)字
2.正則表達(dá)式的簡(jiǎn)單應(yīng)用及Python示例
line = "XXX出生于2001年6月1日"
line = "XXX出生于2001/6/1"
line = "XXX出生于2001-6-1"
line = "XXX出生于2001-06-01"
line = "XXX出生于2001-06"
regex_str = ".*出生于(\d){4}[年/-]\d{1,2}([月/-]\d{1,2}|[月/-]|$))"
match_obj = re.match(regex_str, line)
if match_obj:
print(match_obj.group(1))