正则表达式

python学习网 2018-01-21 06:51:02

^ 以某个开头

$ 以某个结尾

.* 某个任意多次,大于等于0, !!! .号不匹配\n

? 让某个取消贪婪匹配,可以理解为改为从左到右匹配到某个为止

+ 某个至少为一次,大于等于1

{ }例,{2,5},某个出现2到5次.....{2},{2,}等

| 或者(a|b),选a或者b

[ ]有三种意思,1.[13567]中括号的任选一个-------2.[0-9],[a-z]-------3.[.]就代表.号,不代表任意字符了

[^] 例,[^1]非1

[a-z]同上

\s空格

\S非空格

\w代表[A-Za-z0-9_]

\W代表非[A-Za-z0-9_]

[\u4E00-\u9FA5]代表汉字

( )

\d数字

例1

"""去贪婪匹配"""

import re
    a = "zooooozzoz"
    regex_str = ".*(z.*z).*"
    m = re.findall(regex_str, a)
    print(m)
    # >>> ['zoz']
    # zoooooz不符合条件
    # zz不符合条件

import re
c = "zooooozzozy"
regex_str = "(z.+?z).*"
match_obj = re.match(regex_str, c)
print(match_obj.group(1))

# >>>zoooooz

例2

import re
line1 = "你出生在2016-09-01"
line2 = "你出生在2016-9-1"
line3 = "你出生在2016/09/01"
line4 = "你出生在2016年9月1号"
line5 = "你出生在2016-09"

regex_str = "(你出生在\d{4}(-|/|年)\d{1,2}($|(月|/|-)\d{1,2}($|号)))"
match_obj = re.match(regex_str, line5)
if match_obj:
    print(match_obj.group(1))
    
#五个line都能匹配
阅读(755) 评论(0)