多平台统一管理软件接口,如何实现多平台统一管理软件接口
258
2022-08-25
Python 正则表达式(python培训)
正则表达式(RegularExpression, re)
是一个计算机科学的概念用于使用单个字符串来描述,匹配符合某个规则的字符串常常用来检索,替换某些模式的文本
正则的写法
.(点号): 表示任意一个字符,除了\n,比如查找所有的一个字符 .[]: 匹配中括号中列举的任意字符,比如[L,Y,0], LLY, Y0, LIU\d: 任意一个数字\D: 除了数字都可以\s: 表示空格,tab键\S: 除了空白符号\w: 单词字符,就是a-z, A-Z, 0-9, _\W: 除了“\w”表示的都可以: 表示前面内容重复零次或者多次, \w+: 表示前面内容至少出现一次?: 前面才出现的内容零次或者一次{m,n}: 允许前面内容出现最少m次,最多n次^: 匹配字符串的开始$: 匹配字符串的结尾\b: 匹配单词的边界(): 对正则表达式内容进行分组,从第一个括号开始,编号逐渐增大
验证一个数字: ^\d$ 必须有一个数字,最少一位: ^\d+$ 只能出现数字,且位数为5-10位: ^\d{5,10}$ 注册者输入年龄,要求16岁以上,99岁以下: ^[16,99]$ 只能输入英文字符和数字: ^[A-Za-z0-9]$ 验证qq号码: [0-9]{5,12}
\A: 只匹配字符串开头,\Aabcd, 则abcd\Z: 只匹配字符串末尾,abcd\Z, abcd|: 左右任意一个(?P…): 分组,除了原来的编号再制定一个别名,(?P12345){2}, 1234512345(?P=name): 引用分组
RE使用大致步骤
使用compile将表示正则的字符串编译为一个pattern对象通过pattern对象提供一系列方法度文本进行查找匹配,获得匹配结果,一个Match对象最后使用Match对象提供的属性和方法获得信息,根据需要进行操作
RE常用函数
group(): 获得一个或者多个分组匹配的字符串,当要获得整个匹配的子串时,直接使用group或者group(0)start: 获取分组匹配的子串在整个字符串中的起始位置,参数默认0end: 获取分组匹配的子串在整个字符串中的结束位置,默认为0span: 返回的结构技术(start(group), end(group))
# 导入相关包import re# 查找数字# r表示字符串不转义p = re.compile(r'\d+')# 在字符串“one12twothree33456four78”中进行查找,按照规则p制定的正则进行查找# 返回结果是None表示没有找到,否则会返回match对象m = p.match("one12twothree33456four78")print(m)
None
# 导入相关包import re# 查找数字# r表示字符串不转义p = re.compile(r'\d+')# 在字符串“one12twothree33456four78”中进行查找,按照规则p制定的正则进行查找# 返回结果是None表示没有找到,否则会返回match对象# 参数3,6表示在字符串中查找的范围m = p.match("one12twothree33456four78", 3, 26)print(m)# 上述代码说明的问题# 1. match可以输入参数表示起始位置# 2. 查找到的结果只包含一个,表示第一次进行匹配成功的内容
<_sre.SRE_Match object; span=(3, 5), match='12'>
print(m[0])print(m.start(0))print(m.end(0))
1235
import re# I 表示忽略掉大小写p = re.compile(r'([a-z]+) ([a-z]+)', re.I)m = p.match("I am really love you")print(m)
<_sre.SRE_Match object; span=(0, 4), match='I am'>
print(m.group(0))print(m.start(0))print(m.end(0))
I am04
print(m.group(1))print(m.start(1))print(m.end(1))
I01
print(m.group(2))print(m.start(2))print(m.end(2))
am24
print(m.groups())
('I', 'am')
查找
search(str, [, pos[, endpos]]): 在字符串中查找匹配,pos和endpos表示起始位置findall: 查找所有finditer:查找,返回一个iter结果
import rep = re.compile(r'\d+')m = p.search("one12two34three567four")print(m.group())
12
rst = p.findall("one12two34three567four")print(type(rst))print(rst)
sub 替换
sub(rep1, str[, count])
# sub替换案例import re# \w 包含数字和英文字母p = re.compile(r'(\w+) (\w+)')s = "hello 123 wang 456, i love you"rst = p.sub(r'Hello world', s)print(rst)
Hello world Hello world, Hello world you
匹配中文
大部分中文表示范围是[u4e00-u9fa5], 不包括全角标点
import retitle = '世界 你好, hello moto'p = re.compile(r'[\u4e00-\u9fa5]+')rst = p.findall(title)print(rst)
['世界', '你好']
贪婪和非贪婪
贪婪:尽可能多的匹配, (*)表示贪婪匹配非贪婪:找到符合条件的最小内容即可,(?)表示非贪婪正则默认使用贪婪匹配
import retitle = u'
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~