Python之正则表达式

来源:互联网 发布:淘宝兼职要身份证干么 编辑:程序博客网 时间:2024/06/06 14:46

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##

 

原创粉丝点击