re 模块 (*****)正则匹配

import re    # 正则 字符匹配(普通字符,元字符)
# 普通字符:大多数字符和子母
# 元字符: .^ $ * ?+{}[]|()\

# a = re.findall("a..x","dsfaffassxdfq") # 模糊匹配
# print(a)   # ['assx']
# a = re.findall("^a..x","assxfassxdfq")  # 开头有就拿没就是空
# print(a)  # ['assx']
# a = re.findall("^a..x$","assxfassxdfq")  # 结尾有就拿没就是空
# print(a) # []
# a = re.findall("d*","sdfdddsdf")  # *(0,+00)每个字符串进行一次匹配
# print(a)  # ['', 'd', '', 'ddd', '', 'd', '', '']
# a = re.findall("d+","sdfdddsdf") # +(1,+00)每个字符串进行一次匹配
# print(a)  # ['d', 'ddd', 'd']
# a = re.findall("alex?","sdfdddalexxxx") # ?(0,1)
# print(a)  # ['alex']

# {}   {0,}==*   {1,}==+  {0,1}==?
# 贪婪匹配(匹配最多值) * + ?等是贪婪匹配  后面加? 变成惰性匹配(匹配组少值)
# a = re.findall("alex*?","sdfdddalexxxx")
# print(a) # ['ale']

# a = re.findall("q[0-9]*","dsfsfq124das")
# print(a)   # ['q124']

# a = re.findall("\([^()]*\)","12+(34*5+25*(2-1))")
# print(a)  # ['(2-1)']

# 转化符 \   后面跟元字符去除特殊功能比如\*
# \d 匹配任何十进制数 类[0-9]
# \D 匹配任何非数字字符 类[^0-9]
# \s 匹配任何空白字符 类[\t\n\r\f\v]
# \S 匹配任何非空字符  类[^\t\n\r\f\v]
# \w 匹配任何字母数字字符 类[a-zA-Z0-9]
# \W 匹配任何非字母数字字符  类[^a-zA-Z0-9]
# \b 匹配一个特殊字符边界,比如空格,&,#等

# a=re.findall("\d","12+(34*5+25*(2-1))")
# print(a)   # ['1', '2', '3', '4', '5', '2', '5', '2', '1']

# a=re.findall("\d+","12+(34*5+25*(2-1))")
# print(a)  # ['12', '34', '5', '25', '2', '1']

# a=re.findall("\D+","12+(34*5+25*(2-1))")
# print(a)  # ['+(', '*', '+', '*(', '-', '))']

# a = re.findall("I","hello I am leI")
# print(a)  # ['I', 'I']

# a = re.findall(r"I\b","hello I am leIe")   # r 取消转化
# print(a)  # ['I']

# a = re.findall("I\\b","hello I am leIe")   # \ 取消了\ 转化作用\\b就相当于Python识别\b
# print(a)  # ['I']

# a = re.findall(r"I\b","hello I am leI")
# print(a)  # ['I', 'I']

# a = re.findall(r"ka|b","sdfkasfd")
# print(a)  # ['ka']

# a = re.findall(r"ka|b","sdfkbsfd")
# print(a)  # ['b']

# a = re.findall(r"ka|b","sdfkabsfd")
# print(a)   # ['ka', 'b']

# a = re.findall(r"ka|b","sdfka|bsfd")
# print(a)   # ['ka', 'b']

# a = re.findall("(abc)+","abcabcabc")
# print(a)  # ['abc']

# a = re.findall(r"(abc)+","abcabcabc")
# print(a)   # ['abc']

# search 匹配成功取出对象地址不成功不输出 可用group()取出值
# a = re.search("(?P<name>[a-z]+)\d+","alex35lei22xir26").group()
# print(a)  # alex35

# a = re.search("(?P<name>[a-z]+)(?P<age>\d+)","alex35lei22xir26").group("age")
# print(a)   # 35

# a = re.match("\d+","12alex35lei22xir26").group()
# print(a) # 12

# a = re.split(" ","hello abc def")
# print(a)  # ['hello', 'abc', 'def']

# a = re.split("[ |]","hello abc|def")
# print(a) # ['hello', 'abc', 'def']

# a = re.split("[ab]","abc")
# print(a)  #  ['', '', 'c']

# a = re.sub("\d+","A","jaskdasf123kj4j12j4")
# print(a)  #  jaskdasfAkjAjAjA

# a = re.sub("\d","A","jaskdasf123kj4j12j4")
# print(a)  #  jaskdasfAAAkjAjAAjA

# a = re.subn("\d","A","jaskdasf123kj4j12j4")
# print(a)  #  ('jaskdasfAAAkjAjAAjA', 7)

# com = re.compile("\d+")
# print(com.findall("sd123se234e34ed")) # ['123', '234', '34']

# ret = re.finditer("\d","daw123dw13eew13wer32hjk")
# print(next(ret).group())  # 1
# print(next(ret).group())  # 2
# print(next(ret).group())  # 3

# a = re.findall("www\.(?:baidu|163)\.com","dadwww.163.comasd")
# print(a)  #  ['www.163.com']

 

posted @ 2018-11-14 20:47  文昌  阅读(296)  评论(0)    收藏  举报