• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Python正则表达式写法

武飞扬头像
cs菜鸟1号
帮助1

一、re

1.re.match(rule,text) #必须从开头开始匹配,开头不符合就失败
2.re.search(rule,text)#从左到右遍历字符串,找到第一个符合的字符串就就返回
3.re.findall(rule,text)#在整个字符串中寻找满足条件的字符串,返回列表
4.re.sub(rule,replacetext,text)#对匹配出来的字符串人为替换,返回字符串

text='my email is 213700@gmali.com and xssheo@139.com'
rule="\s(\w @[0-9a-z] [.]com)"
result=re.sub(rule,'wrong',text)
print(result)

5.re.split(rule,text):按照rule分割text

text='my&email*is)213700@gmali.com and xssheo@139.com'
result=re.split('[^@\w]',text)
print(result)

6.re.compile(rule,re.VERBOSE) 编译正则表达式,能够在rule中注释

text='my email is 213700@gmail.com and xssheo@139.com'
rule="\s(\w @[0-9a-z] [.]com)"
# re.VERBOSE 忽略换行
r=re.compile(
    """
     \s #邮箱前的空格
     (\w  #邮箱的第一部分
     @[0-9a-z]  #邮箱的第二部分
     [.]com)
    """,
   re.VERBOSE
)
result=re.findall(r,text)
print(result)

二、单字符

re.match()
1.rule=‘.’ 从开头开始匹配任意字符除换行\n #注意[.]就是匹配字面意思上的. 不是原来的意思
.加上re.DOTALL可匹配所有的字符
2.rule=‘\d’ 匹配任意数字字符–>可替换为0-9
3.rule='\D’匹配任意非数字字符–>可替换为^0-9 ^代表非
4.\s 匹配空白字符,如\n \t \r(回到本行首) 空格
5.\w 匹配小写和大写的a-z、数字和下划线–>可替换为0-9a-zA-Z_
6.\W匹配除小写和大写的a-z、数字和下划线的所有字符–>可替换为^0-9a-zA-Z_ ^代表非
7.[rule or rule]中括号内的内容均可匹配

三、多字符

1.* 匹配0个或多个字符
2. 匹配1个或多个字符
3.?匹配0个或1个字符
4.{m} 指定匹配字符数
5.{m,n} 匹配m到n个字符,默认匹配最多
eg:rule=‘[0-9]’ or rule=‘[^0-9a-zA-Z_] ’
6.匹配所有字符 rule='[\d\D]
’ or rule=‘[\w\W]*’ or ‘.’ re.DOTALL
三个正则验证案例:

import re
'''
1.验证手机号
第一位:1
第二位:3456789
第三位-第十一位:0-9
'''
text1='13165123452'
rule1='1[3456789][\d]{9}'
result1=re.match(rule1,text1)
print('result1:' result1.group())
'''
2.验证邮箱:xxx@yyy.com
xxx:数字、字母和下划线
@
yyy:数字、小写字母
.com
'''
text2='xsshejjo@163.com'
rule2='\w @[0-9a-z] [.]com'
result2=re.match(rule2,text2)
print('result2:' result2.group())
'''
3.验证身份证号
前17位:0-9
第18位:0-9Xx
'''
text3='22370220040604898x'
rule3='\d{17}[0-9Xx]'
result3=re.match(rule3,text3)
print('result3:' result3.group())
学新通

四、特殊字符

1.脱字号^
(1)中括号内表示取反 [^\d]
(2)中括号外表示以指定字符打头 ^a[a-z]
2.美元符号$ 表示以…为结尾
如邮箱验证中以com结尾,那么rule=‘[\w] @[0-9a-z] [.]com$’
3.竖线|
(1)中括号认为是单个字符[https|http|ftp|file]
(2)中括号认为是分割,表示或(https|http|ftp|file)

五、贪婪模式和非贪婪模式

1.贪婪模式:正则表达式中尽可能多地去匹配字符(默认是贪婪模式)
2.非贪婪模式:正则表达式最后添加?,尽可能少地去匹配字符,如[a-z] ?
一次获取多个值时一定要采用非贪婪模式,加?
五、转义字符
.相当于[.] 表示真的匹配一个.

text4='3...1415926'
rule4='\d\. \d '
result4=re.match(rule4,text4)
print('result4:' result4.group())

六、group分组

通过添加()提取字符串

import re
text5='my email is 213700@gmali.com and xssheo@139.com'
rule="\s (\w @[0-9a-z] \.com)\s and\s (\w @[0-9a-z] \.com)"
result5=re.search(rule,text5)
print('result5:' result5.group(1))

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgejkae
系列文章
更多 icon
同类精品
更多 icon
继续加载