re正则
发布时间:2020-12-14 05:51:01 所属栏目:百科 来源:网络整理
导读:# 转义字符和原生字符 import re ## # 转义 # text = ‘apple price is $299‘ # ret = re.search(‘$d+‘,text) # print(ret.group()) # # 原生字符串 text = ‘ c ‘ ret = re.match( ‘ \c ‘ ,text) print (ret.group()) # group 分组 text = " ap
#转义字符和原生字符 import re # # # 转义 # text = ‘apple price is $299‘ # ret = re.search(‘$d+‘,text) # print(ret.group()) # # 原生字符串 text = ‘c‘ ret = re.match(‘\c‘,text) print(ret.group()) # group 分组 text = "apple‘s price is $100,oriange‘s price is $22" ret = re.search(‘.*($d+).*($d+)‘,text) print(ret.group(2)) print(ret.groups()) # sub 替换 html = ‘‘‘ <div class="job-detail"> <p>工作职责</p> <p>1.通过模拟请求将人工复杂操作转变为自动化操作</p> <p>2.将自动化操作融入整套系统</p> <p>3.获取业务所需数据</p> <p>职位要求<br></p> <p>1.一年以上 Python 开发经验</p> <p>2.精通网络编程、熟悉 HTTP 协议</p> <p>3.熟悉 HTML、XPath、CSS、JavaScript</p> <p>4.熟悉正则表达式,从结构化的和非结构化的数据中获取信息</p> <p>5.拥有良好的编码习惯,结构清晰,命名规范,逻辑性强,认同单元测试</p> <p>6.善于思考,能独立分析和解决问题</p> <p>7.责任心强,具备良好的团队合作精神</p> <p>8.熟练使用 Git,熟悉 Pull Request 工作流</p> <p>9.如果您有 Blog、GitHub、Stack Overflow、微博、Twitter 帐号,强烈建议您附注在简历中</p> </div> ‘‘‘ ret = re.sub(‘<.*?>‘,"",html) # 只要标签之间的文字 print(ret) # split 分割 text = ‘hello world&ni hao‘ ret= re.split(‘[^a-zA-Z]‘,text) print(ret) # compile ? # 单个字符的匹配 import re # 匹配某个字符串 如果是 ahello 就不会匹配到了 # match从开头匹配 所以ahello 就匹配不到 # text = "hello" # ret = re.match(‘he‘,text) # print(ret.group()) # 点 . 表示匹配任意的字符 .只能匹配一个字符 # . 不能匹配n 换行符 # text = "hello" # ret = re.match(‘.‘,text) #只拿到h # print(ret.group()) # d 匹配任意数字 # text = "1234" # ret = re.match(‘d‘,text) #只拿到 1 # print(ret.group()) # D 匹配任意的非数字 # text = "abc" # ret = re.match(‘D‘,text) #只拿到 a # print(ret.group()) # s 匹配空白符(n,t,r,空格) # text = "t" # ret = re.match(‘s‘,text) #只拿到 1 # print(ret.group()) # w 匹配 a-z A-Z 数字 下滑线 # text = "_aA" # ret = re.match(‘w‘,text) #只拿到 _ # print(ret.group()) # W 跟w 相反 # 组合的方式,只要满足中括号里的字符就可以匹配 # text = "1" # ret = re.match(‘[1a]‘,text) #只要text是以1或a开头就能匹配到 # print(ret.group()) # text = "0731-8888888abcdef" # ret = re.match(‘[d-]+‘,text) # print(ret.group()) #0731-8888888 # text = ‘0123‘ # ret = re.match(‘[0-9]+‘,text) # print(ret.group()) # 0123 text = ‘abcd0123‘ ret = re.match(‘[^0-9]+‘,text) # 匹配非 0-9 print(ret.group()) ? # 多个字符的匹配 import re # * 匹配0 个或者多个字符 # text = ‘abcd‘ # ret = re.match(‘s*‘,text) # print(ret.group()) # + 匹配一个或者多个 # text = ‘ab+cd‘ # ret = re.match(‘w+‘,text) # print(ret.group()) # ? 匹配1个或者 0个 # text = ‘abcd‘ # ret = re.match(‘w?‘,text) # print(ret.group()) # {n} 指定匹配n 个字符 # text = ‘abcd‘ # ret = re.match(‘w{3}‘,text) # print(ret.group()) #abc # {m,n} 匹配m-n 个字符 # 以匹配到的最多的为准 # text = ‘abcd‘ # ret = re.match(‘w{1,3}‘,text) # print(ret.group()) # abc ? # 小案例练习 import re ‘‘‘ # 验证手机号码: 手机号码以 1 开头,第二位是34578,剩下的9位随意 text = ‘13149133314‘ ret = re.match(‘1[34578]d{9}‘,text) print(ret.group()) # 验证邮箱: 邮箱规则名称是 数字 字母 下划线 然后是@ 后面是域名 text = "[email?protected]" ret = re.match(‘[email?protected][a-z0-9]+.[a-z]+‘,text) print(ret.group()) # url 的匹配 # url规则:前面是http https 后面是 :// 后面是任意非空白字符 # s 匹配空白符(n,空格) text = ‘https://www.baidu.com/s?wd=python%20selenium&rsv_spt=1&rsv_iqid=0xa4d2655300017277&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&inputT=8498&rsv_t=dc42KYvFCf1oL197SvrZ7pGvUGE1hguHcVAhnk9wpNtiOobCOY%2FVykkEjR8gQl%2BzdBag&oq=%25E6%25B7%2598%25E5%25AE%259D&rsv_pq=b63f63a500002a02&rsv_sug3=47&rsv_sug1=42&rsv_sug7=100&rsv_sug2=0&rsv_sug4=9034‘ ret = re.match(‘(http|https|ftp)://[^s]+‘,text) print(ret.group()) # 验证身份证 总共18位 最后一位可能是小写x或大写X text = ‘411102198910152116‘ ret = re.match(‘d{17}[dxX]‘,text) print(ret.group()) ‘‘‘ # ^ 一种是在中括号里表示取反 一种是以什么开头 # text = ‘hello‘ # ret = re.match(‘^he‘,text) # print(ret.group()) # text = ‘hello‘ # ret = re.search(‘ll‘,text) # print(ret.group()) # $ 以什么结尾 # text = ‘[email?protected]‘ # ret = re.match(‘[email?protected]$‘,text) # print(ret.group()) # | 表示或 并集 # text = ‘https‘ # ret = re.match(‘(http|https)‘,text) # print(ret.group()) # 贪婪模式 非贪婪模式 # 匹配0-100 之间的数字 text = ‘99‘ ret = re.match(‘[1-9]d?$|100$‘,text) print(ret.group()) ? # re中常见的函数 import re # 分组 # text = "apple‘s price is $99,orange‘s price is $10" # ret = re.search(‘.*($d+).*($d+)‘,text) # print(ret.group(2)) # print(ret.groups()) # 提取所有的子分组 (‘$99‘,‘$10‘) # findall 返回的是列表 找出所有的满足条件的 # print(re.findall(‘$d+‘,text)) # [‘$99‘,‘$10‘] html = ‘‘‘ <div class="job-detail"> <p>工作职责</p> <p>1.通过模拟请求将人工复杂操作转变为自动化操作</p> <p>2.将自动化操作融入整套系统</p> <p>3.获取业务所需数据</p> <p>职位要求<br></p> <p>1.一年以上 Python 开发经验</p> <p>2.精通网络编程、熟悉 HTTP 协议</p> <p>3.熟悉 HTML、XPath、CSS、JavaScript</p> <p>4.熟悉正则表达式,从结构化的和非结构化的数据中获取信息</p> <p>5.拥有良好的编码习惯,结构清晰,命名规范,逻辑性强,认同单元测试</p> <p>6.善于思考,能独立分析和解决问题</p> <p>7.责任心强,具备良好的团队合作精神</p> <p>8.熟练使用 Git,熟悉 Pull Request 工作流</p> <p>9.如果您有 Blog、GitHub、Stack Overflow、微博、Twitter 帐号,强烈建议您附注在简历中</p> </div> ‘‘‘ ret = re.sub(‘<.+?>‘,"",html) # sub 是替换 用空把标签<>内的内容替换掉 # print(ret) # 拿到所有的文本 # split函数 text = ‘hello world&ni hao‘ ret = re.split(‘[^a-zA-Z]‘,text) # print(ret) # compile 用法 text = ‘this number is 20.500‘ ret = re.compile(‘d+.?d*‘) ret2 =re.search(ret,text) print(ret2.group()) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |