1 ^后面的以什么开头 $前面的以什么结尾 .任意字符 *任意次 ?取消贪婪匹配
例1:取出"jmmmmmmmmyjjj123"中的"jmmmmmmmmyj"
import re
line = "jmmmmmmmmyjjj123"
match_str = ".*?(j.*?j).*"
match_obj = re.match(match_str, line)
if match_obj:
print(match_obj.group(1))
2 {1}大括号前面的字符出现一次 {1,}大括号前面的>=1次 {2,5} 出现2-5次
| 或
[abcd] 出现abcd任意 [^1]不是
例2:请写出手机号码的正则表达式
import re
def phoneNumRegex(self, phone):
regex_str = "(1[34578][0-9]{9})"
match_obj = re.match(regex_str, phone)
if match_obj:
return phone
3 \s空格字符 \S非空格字符 \w相当于[A-Z a-z 0-9] \W与\w相反
4 \u4E00_\u9FA5 中文字符
例3 提取"study in 北京大学" 中 "北京大学"
line = "study in 北京大学"
regex_str = ".*?([\u4E00_\u9FA5])"
5 \d 数字
6 正则表达式综合练习:匹配多种情况下的出生年月日2001/6/1 2001-6-1 2001-06-01 2006-06
import re
def birthday_regex(birthday):
regex_str = ".*出生于(\d{4}[年-/]\d{1,2}($|[月/-]\d{1,2}|月))"
match_obj = re.match(regex_str, birthday)
if match_obj:
return match_obj.group(1)