1.特殊字符
(1)^$*+?{2}{2,}{2,5}|
^ 限定开头字符
$ 限定结尾字符
- 前面字符出现任意多次(包括0次)
- 至少匹配1次
? 非贪婪匹配模式(默认情况下是贪婪匹配,反向匹配,从最后往最前面匹配)很常用。
{2} 限定前面字符出现的次数
{2,}限定前面字符出现2次及以上
{2,5}限定前面字符出现至少2次,最多5次
| 逻辑或
(2)[][^][a-z].
[] 匹配括号中的任何一个
[^] 不等于
[a-z]匹配括号里的区间字符,模式匹配中很常见
. 一个字符,包含所有的字符(包括\w和\W)
(3)\s\S\w\W
\s 空格
\S 非空格
\w 任意字符[A-za-z0-9_]
\W 非任意字符
(4)[\u4E00-\u9FA5])()\d
[\u4E00-\u9FA5] 匹配连续汉字
() 可以用match_obj.group(1)获取第一组括号里的内容,提取子字符串的时候非常常用
\d 匹配数字
2.正则表达式的简单应用及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))