首页 > 编程语言 > 详细

python中常用模块之re模块以及正则表达式

时间:2019-07-17 23:27:58      阅读:111      评论:0      收藏:0      [点我收藏+]

一,正则表达式:

正则表达式不仅仅用在python中,而是所有语言都可使用。只是调用方法各不相同。

 

#在python中纯代码校验手机号码:
while
True: phone_number = input(please input your phone number :) if len(phone_number) == 11 and phone_number.isdigit() and (phone_number.startswith(13) or phone_number.startswith(14) or phone_number.startswith(15) or phone_number.startswith(16) or phone_number.startswith(17) or phone_number.startswith(18)): print(合法手机号码) else: print(不是合法手机号码)

#在python中调用re模块使用正则表达式校验手机号码:
import re
phone_number = input(please input your phone number : )
if re.match(^(13|14|15|16|17|18)[0-9]{9}$,phone_number):
        print(是合法手机号码)
else:
        print(不是合法手机号码)

结论:在python中调用re模块使用正则表达式会简便很多。

正则表达式的语法如下:

技术分享图片

技术分享图片

其中量词‘*’,‘+’,‘?’都是贪婪匹配,就是往更多次匹配字符,如果量词后面加了  ‘?’ 这个符号,就表示惰性匹配,换句话说就是尽量往少的匹配。

 

在匹配实列中的体现如下:

1.  ‘.’ ,‘^’,‘$’  三个的具体表现

 技术分享图片

2.‘?’,‘+’,‘*’,‘{}’ 具体表现

 技术分享图片

当量词后加上‘?’发生了变化。

技术分享图片

3.‘[^]*’ 的用法:

技术分享图片

二,总结几个常用的贪婪匹配的组合

技术分享图片

 

 三,贪婪匹配和非贪婪匹配

 

1.<.*>:先拿着里面的.*去匹配所有的内容,然后再根据>找到最后一个>为止。

2.<.*?>:先拿着?后面的>,在字符中碰到第一个>就停止。

 

 

re模块的使用:

 三个必须掌握的方法有如下

1.findall

import re

res = re.findall(‘c‘,‘andy cody jcason‘) #查找字符串中所有‘c’字符

print(res)#返回所有的满足匹配条件的放在列表里, [‘c‘,‘c‘]

 findall 查找所有字符,只要是能匹配到的字符,全部放在一个列表里,不需要调用group方法。 

 

2.search

import re
res = re.search(c,ancdy cody jcason) print(res.group()) #用group方法

search 查找所有字符,只要找到第一个匹配到的字符后会停止查找,并返回匹配的字符。

全部字符中如果没有要找的字符,就会返回None,如果用group方法调用就会报错。

 

3.match

import re
res = re.match(c,cncdy cody jcason)
print(res.group()) #‘c’

match 只会找字符中的开头字符是否含有所匹配的字符,有就会返回匹配的字符

如果字符开头不是要找的字符,就会返回None,     如果用group方法调用就会报错

 

 其他涉及到的使用方法:

 1.split

ret = re.split([ab], abcd)  # 先按‘a‘分割得到‘‘和‘bcd‘,再对‘‘和‘bcd‘分别按‘b‘分割
print(ret)  # [‘‘, ‘‘, ‘cd‘]

2.sub

ret = re.sub(\d, W, 3andy4cody4, 1)   # 将数字替换成‘W‘,参数1表示只替换1个
print(ret)  # Wandy4cody4   

3.subn

ret = re.subn(\d, W, 3andy4cody4, 1)   # 将数字替换成‘W‘
print(ret)  # WandyWcodyW  返回元组(替换的结果,替换了多少次)

4.compile

obj = re.compile(\d{3})  #将正则表达式编译成为一个 正则表达式对象,规则要匹配的是3个数字
ret = obj.search(abc123eeee) #正则表达式对象调用search,参数为待匹配的字符串
print(ret.group())  #结果 : 123

 

 

 

 

 

 

 

 

 

 

python中常用模块之re模块以及正则表达式

原文:https://www.cnblogs.com/wujc3/p/11202353.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!