Python 正则,,Python 正则#
Python 正则,,Python 正则#
Python 正则
# 正则表达式"""re 模块使 Python 语言拥有全部的正则表达式功能re.match函数 re.match(pattern, string, flags=0)re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 pattern 匹配的正则表达式 string 要匹配的字符串。 flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等 匹配成功re.match方法返回一个匹配的对象,否则返回None 可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。 group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。具体使用# 导入re模块import re# 使用match方法进行匹配操作result = re.match(正则表达式,要匹配的字符串)# 如果上一步匹配到数据的话,可以使用group方法来提取数据result.group()"""# 示例import reresult = re.match("itcast", "itcast.cn")result2 = re.match("itcast", "444.cn.itcast")print(result.group())print(result2) # 不是从头开始 返回None"""匹配单个字符. 匹配任意1个字符(除了\n)[ ] 匹配[ ]中列举的字符\d 匹配数字,即0-9\D 匹配非数字,即不是数字\s 匹配空白,即 空格,tab键\S 匹配非空白\w 匹配单词字符,即a-z、A-Z、0-9、_\W 匹配非单词字符"""# 示例 .ret = re.match("t.o", "two")print(ret.group())# 示例 []ret = re.match("[hH]", "hello Python")print(ret.group())# 匹配0到9第一种写法ret = re.match("[0123456789]Hello Python", "7Hello Python")print(ret.group())# 匹配0到9第二种写法ret = re.match("[0-9]Hello Python", "7Hello Python")print(ret.group())ret = re.match("[0-35-9]Hello Python", "7Hello Python")print(ret.group())# 示例 \dret = re.match("嫦娥\d号","嫦娥2号发射成功")print(ret.group())# 示例 \sret = re.match("嫦娥\s号", "嫦娥 号发射成功")print(ret.group())# 示例 \wret = re.match(‘\w‘, "ath565656")print(ret.group())# 匹配多个字符"""* 匹配前一个字符出现0次或者无限次,即可有可无+ 匹配前一个字符出现1次或者无限次,即至少有1次? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有{m} 匹配前一个字符出现m次{m,n} 匹配前一个字符出现从m到n次"""# 示例1:*ret = re.match("[A-Z][a-z]*","MnnM")print(ret.group())# 示例2:+names = ["name1", "_name", "2_name", "__name__"]for name in names: ret = re.match("[a-zA-Z_]+[\w]*",name) if ret: print("变量名 %s 符合要求" % ret.group()) else: print("变量名 %s 非法" % name)# 示例3:?ret = re.match("[1-9]?[0-9]", "7")print(ret.group())# 示例4:{m} {m,n}ret = re.match("[a-zA-Z0-9_]{6}", "12a3g45678")print(ret.group())ret = re.match("[a-zA-Z0-9_]{8,20}", "1ad12f23s34455ff66")print(ret.group())# 匹配开头结尾"""^ 匹配字符串开头$ 匹配字符串结尾"""# 示例1:$ 匹配163.com的邮箱地址email_list = ["xiaoWang@163.com", "xiaoWang@163.comheihei", ".com.xiaowang@qq.com"]for email in email_list: ret = re.match("[\w]{4,20}@163\.com$", email) if ret: print("%s 是符合规定的邮件地址,匹配后的结果是:%s" % (email, ret.group())) else: print("%s 不符合要求" % email)# 匹配分组"""| 匹配左右任意一个表达式(ab) 将括号中字符作为一个分组\num 引用分组num匹配到的字符串(?P<name>) 分组起别名(?P=name) 引用别名为name分组匹配到的字符串"""# 示例1:| 满足|左右两边任意一个表达式ret = re.match("[1-9]?\d$|100","100")print(ret.group()) # 100ret = re.match("[1-9]?\d$|100","78")print(ret.group()) # 78# 示例2:( ) 满足括号中的枚举ret = re.match("\w{4,20}@(163|126|qq)\.com", "test@126.com")print(ret.group()) # test@126.com# 示例3:\numret = re.match(r"<([a-zA-Z]*)>\w*</\1>", "<html>hh</html>")print(ret.group())labels = ["<html><h1>www.eee.cn</h1></html>", "<html><h1>www.eee.cn</h2></html>"]for label in labels: ret = re.match(r"<(\w*)><(\w*)>.*</\2></\1>", label) if ret: print("%s 是符合要求的标签" % ret.group()) else: print("%s 不符合要求" % label)# 示例4:(?P<name>) (?P=name)ret = re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>", "<html><h1>www.eee.cn</h1></html>")ret.group()ret = re.match(r"<(?P<name1>\w*)><(?P<name2>\w*)>.*</(?P=name2)></(?P=name1)>", "<html><h1>www.eee.cn</h2></html>")ret.group()# 高级语法"""re.search(pattern,string,flags) 扫描整个字符串并返回第一个成功的匹配 re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None; re.search匹配整个字符串,直到找到一个匹配。re.findall(string[, pos[, endpos]]) 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表 string 待匹配的字符串。 pos 可选参数,指定字符串的起始位置,默认为 0。 endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。 re.sub(pattern, repl, string, count=0, flags=0) 替换字符串中的匹配项 pattern : 必填正则中的模式字符串。 repl : 必填替换的字符串,也可为一个函数。 string : 必填要被查找替换的原始字符串。 count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。 flags : 编译时用的匹配模式,数字形式re.split() 根据匹配进行切割字符串,并返回一个列表 pattern 匹配的正则表达式 string 要匹配的字符串。 maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。 flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等"""# searchprint(re.search(‘www‘, ‘www.eee.com‘).group()) # 在起始位置匹配print(re.search(‘com‘, ‘www.eee.com‘).group()) # 不在起始位置# subret = re.sub(r"\d+", ‘998‘, "id = 997")print(ret)# 设定函数调用 依据表达式查找到数据后,调用函数 再返回def add(temp): strNum = temp.group() num = int(strNum) + 1 return str(num)ret = re.sub(r"\d+", add, "python = 99")print(ret)# findallret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")print(ret)pattern = re.compile(r‘\d+‘) # 查找数字 创建表达式result1 = pattern.findall(‘runoob 123 google 456‘)result2 = pattern.findall(‘run88oob123google456‘, 0, 10) # 从0开始到10结束查找# splitret = re.split(r":| ", "info:xiaoZhang 33 shandong") # 以冒号或空格切割print(ret)re.split(‘a*‘, ‘hello world‘) # 对于一个找不到匹配的字符串而言,split 不会对其作出分割# r的作用"""Python中字符串前面加上 r 表示原生字符串>>> ret = re.match(r"c:\\a",mm).group()>>> print(ret)c:\a"""# 常用正则符号"""1、 ? 匹配0次或一次前面的分组(问号在正则表达式中可声明非贪心匹配模式,这两种含义是完全无关的)2、 * 匹配0次或多次前面的分组3、 + 匹配1次或多次前面的分组4、 {n} 匹配n次前面的分组5、 {n,} 匹配n次或更多次前面的分组6、 {,m} 匹配0次到m次前面的分组7、 {n,m} 匹配至少n次,最多m次前面的分组8、 {n,m}?或*?或+?对前面的分组进行非贪心匹配9、 ^ABC 匹配以ABC开头的字符串10、 ABC$ 匹配以ABC结尾的字符串11、 . 匹配所有字符,换行符除外12、 \d、\w和\s分别匹配数字、单词和空格13、 \D、\W和\S分别匹配除数字、单词、和空格外的所有字符14、 [abc] 匹配方括号内的任意字符(诸如a、b或c)15、 [^abc] 匹配不在方括号内的任意字符"""
Python 正则
相关内容
- 【Python3 爬虫】Beautiful Soup库的使用,,之前学习了正则
- python实现24点游戏(地球上最短的24点游戏代码?),
- 【python】爬取糗事百科段子,,#-*-coding
- python 删除2天前后缀为.log的文件,,python脚本 删
- 封装selenium自动化框架中的截图功能,, 对seleniu
- ubuntu18 tensorflow cpu fast_rcnn,,(flappbird
- golang-基础,,1.go的特点 兼
- numpy里*与dot与multiply,,一、* dot()
- 用Python画一颗特别的心送给她,,import num
- 利用正则表达式实现python强口令检测,,"""Chapter
评论关闭