import re
regex = "\w?\d{1,4}.*"
target = "a123#"
# 从头开始匹配,如果开始蔓延匹配上就没有匹配到
ret = re.match(regex,target)
# 找到所有数字进行返回
ret = re.findall("\d{1,10}","#se233er11ere") # 233 11
# 找到所有字母进行返回
ret = re.findall("[a-zA-Z]{1,10}","#se233erere") # se erere
# 从这个字符串开始进行查找,找到第一个匹配的进行返回
ret = re.search("\d{1,10}","#se233er11ere") # 233
# sub(pattern,"替换字符","被替换字符",count=替换次数,如果不写,默认是所有)
s = re.sub("\d{1,}","-","nicky1987hash0612",count=1)
print(s)
if ret:
print(ret)
二 正则表达式深入
2.1 compile方法
"""
re.compile:用于将字符串形式的正则表达式编译为Pattern对象
第二个参数是flags:代表匹配模式
1 re.I或者re.IGNORECASE: 忽略大小写
2 re.M或者re.MULTILINE:多行模式,改变^ $的行为
3 re.S(DOTALL): 点任意匹配模式,改变.的行为
"""
pattern = re.compile("^\d{5}")
# 字符串非abc开头,大小写敏感
p1 = re.compile("[^abc]",re.IGNORECASE)
# 字符串非abc开头,大小写不敏感
p2 = re.compile("[^abc]")
p3 = re.compile("^\d{3}",re.M)
p4 = re.compile("^\d{3}")
2.2 Pattern对象
Pattern对象是一个编译好的正则表达式,通过Pattern提供的一系列方法可以对文本进行匹配查找
2.2.1 查找可以成功匹配的子串 search
search(string[, pos[, endpos]]) |re.search(pattern, string[, flags]):
# 查找从字符串的pos下标开始到endpos下标结束的时候去匹配字符串
# 注意只要匹配成功一次后面的不在匹配
pattern = re.compile("\d{1,4}")
target = "123abcABC darling I love you 1314 forever##"
#re.search("\d{1,4}",target)
match = pattern.search(target,35,len(target))
if match:
print(match.group())
2.2.2 按照能够匹配的子串将string,分割后返回列表。maxsplit用于指定最大分割次数,不指定就全部分割
pattern = re.compile("\d{1,4}")
target = "abc123ABCdarling I love you 1314 forever##"
subList = pattern.split(target,1)
print(subList)
结果:['abc', 'ABCdarling I love you 1314 forever##']
2.2.3 搜索字符串,以列表形式返回全部能匹配的子串。
# findall 是查出所有匹配的字符串,而不是像search一样,只是查询出第一个匹配的
pattern = re.compile("\d{1,4}")
target = "abc123ABCdarling I love you 1314 forever##"
subList = pattern.findall(target)
print(subList) # ['123', '1314']
2.2.4 搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。
pattern = re.compile("\d{1,4}")
target = "abc123ABCdarling I love you 1314 forever##"
subIt = pattern.finditer(target)
for s in subIt:
print(s.group())
2.2.5 匹配时用指定的字符替换,count用于指定最多替换次数,不指定时全部替换。
# count用于指定最多替换次数,不指定时全部替换。
pattern = re.compile("[\d{1,4}]")
target = "abc123ABCdarling I love you 1314 forever##"
ret = pattern.sub("_",target,count=3)
print(ret) # abc___ABC darlingI love you ____ forever##
print(re.sub("\d{1,4}","_",target))
# abc_ABC darling Ilove you _ forever##