python re 模块 正则表达式

元字符:

 

 

原生字符串 r"\\" 在re中匹配一个\

re.findall(r"\\","atest\p")  #得到一个\

re.findall("\\\\p","atest\p") # 匹配到\p

  他需要先想python解释器传递两个斜杠\,然后re在用两个斜杠\,去匹配一个斜杠\。

  

import re
str1 = 'output_1970.01.20.txt'
ret = re.findall('\D{2}$',str1)
print (ret)
# ['xt']
# \D{4}$ 匹配字符串最后2位非数字的字符
ret2 = re.findall('\d{2}',str1)
print (ret2)
# ['19', '70', '01', '20']
# 获取连续的两个数字
# findall是把所有匹配的结果都放在列表中返回

 

 

import re
str1 = 'output1970\.01\.20\.txt'
ret = re.findall('\d{4}\\\\.',str1)
print (ret)
# ['1970\\.']
# 1、在python解释器中我们需要用\\表示一个\,因为我们需要一个\来转义一个\。
# 2、在re模块内部同样需要用\\表示一个\。所以最后表现出来是我们需要4个\来向re传2个\\.

 

 

 

 

re.findall()

  把所有匹配到的结果放在列表中返回

re.search()

  返回一个对象,这个对象可以使用group方法获取返回的值。他只返回第一次匹配到的结果

  代码示例:

import re
str1 = 'output_1970.01.20.txt'
ret = re.search('(?P<year>\d{4}).(?P<month>\d{2}).(?P<day>\d{2})',str1)
print (ret.group())
print (ret.group('year'))
print (ret.group('month'))
print (ret.group('day'))

# (?P<name>...) 为group命名,所以在print year时可以获取指定的年
# 如果search没有找到匹配的内容,在ret.group()时会得到一个None。

 

re.match()

  返回一个对象,只在字符串开始匹配。也返回第一次匹配到的结果。

re.split()

  分割字符串。

  re.split('[j,s]','smljal'),先用j去分割,在用s去分割。

re.sub()

  与str的replace类似。

   re.sub(r't\b','tet','test,python') # 把逗号前的t替换成tet。testet,python

re.compile()

  将正则表达式编译成对象,再多地调用这个匹配规则

  com = re.compile('\.com')

  ret1 = com.findall('www.baidu.com')

  ret2 = com.search('u.com.net.com').group()

  print (ret1,ret2)

 

 

 python 标准库 https://docs.python.org/3/library/re.html 

posted @ 2018-03-25 22:58  西康的博客  阅读(187)  评论(0编辑  收藏  举报