代码改变世界

python之正则表达式

2018-02-01 17:09  yyshuke  阅读(171)  评论(0编辑  收藏  举报

正则表达式是检查一个字符串是否与某种模式匹配

1.re库的主要功能函数:
import re
match=re.search(r'[1-9]\d{5}','BIT 100081')
if match:
    print(match.group())
import re
match=re.match(r'[1-9]\d{5}','100081')
if match:
    print(match.group(0))
import re
list=re.findall(r'[1-9]\d{5}','BIT100081  100084')
print(list) 

re.search(pattern,string)是匹配整个字符串,并返回第一个匹配成功的对象

re.match(pattern,string)是只匹配字符串的开始,如果字符串开始不符合正则表达式则匹配失败,返回None

re.findall(pattern,string)是搜索字符串,以列表的类型返回全部能匹配的子串

re.split(pattern,string)将一个字符串遵照正则表达式匹配结果进行分割,返回列表类型

import re
word=re.split(r'[1-9]\d{5}','BIT100081  tyu100084')
print(word)

  结果:

['BIT', '  tyu', '']

  re.split()是将匹配的结果去掉,去掉之后的部分当做一个元素返回到一个列表里。

re.finditer()搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象。

import re
for m in re.finditer(r'[1-9]\d{5}','BIT100081  tyu100084'):
    if m:
        print(m.group(0))

  re.sub()下一个字符串中替换所匹配的正则表达式,返回替换后的字符串

import re
match=re.sub(r'[1-9]\d{5}','wdyqs','BIT100081  tyu100084')
print(match)  
BITwdyqs  tyuwdyqs

 re.compile()将正则表达式的字符串形式编译成正则表达式对象

例:regex=re.compile(r'[1-9]\d{5}')

group(0)是获取匹配后的字符

  2.re的贪婪匹配和最小匹配

match=re.search(r'PY.*N','PYERWNSFNS')
 match.group(0)

  结果是:最长的字符串

'PYERWNSFN'

  

match=re.search(r'PY.*?N','PYUFNDFDFN')
match.group(0)

  结果是:最短的字符串    ======其实就是加?

'PYUFN'