正则

作者: xiaohan_zhang | 来源:发表于2019-07-24 10:11 被阅读0次

导入re模块
import re
使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)
如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()

import re
result = re.match("[hH]el", 'hello xiaobai')
print(result.group())
  • 匹配单个字符
参数 含义
. 匹配任意1个字符(除了\n)
[] 匹配[]中列举的字符串
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即空格、tab键(用的比较少)
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、_、中文字符(慎用这个)
\W 匹配非单词字符
  • 匹配多个字符
参数 含义
* 匹配前一个字符出现0次或无限次,即可有可无
+ 匹配前一个字符出现1次或无限次,即至少有1次
匹配前一个字符出现0次或1次,即至多1次
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现m-n次
  • 匹配开头结尾
参数 含义
^ 匹配字符串开头
$ 匹配字符串结尾
print(re.match(r".*a$", "dsa"))     # 以a结尾
print(re.match(r"^a.*", "as"))      # 以a开头
  • 匹配分组
参数 含义
| 匹配左右任意一个表达式
() 将()中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名 (了解)
(?P=name) 引用别名为name分组匹配到的字符串(了解)
result = re.match(r"a(111|222)b", "a111b")   # a b 中间是111或222
print(result.group())   # a111b
print(result.group(1))  # 111
result = re.match(r"(a)(111|222)b", "a111b")
print(result.group(1))  # a
print(re.match(r"[1-9]?\d$", "0"))
# \1 表示取出第一个分组的匹配结果
print(re.match(r"<(\w*)>.*</\1>", "<h1>hahhaah</h1>")) # 前后都是h1
print(re.match(r"<(\w*)><(\w*)>.*</\2></\1>", "<body><h1>hahhaah</h1></body>"))

print(re.match(r"<(?P<first>\w*)>.*</(?P=first)>", "<h1>hahhaah</h1>"))
  • re模块高级用法
  1. search
    search不会从头匹配,只要匹配到符合要求的数据的地方 就匹配到了
ret = re.search(r"\d+", "阅读次数为 998 333")
print(ret.group())  # 998
  1. findall
ret = re.findall(r"\d+", "python = 9999, c = 3432, c++ = 23344")
print(ret)  # ['9999', '3432', '23344']
  1. sub
    将匹配到的数据进行替换
#方法一
ret = re.sub(r"\d+", "998", "python = 888")
print(ret)  # python = 998


# 方法二
def add(temp):
    strNum = temp.group()
    num = int(strNum) + 1
    return str(num)


ret = re.sub(r"\d+", add, "python = 777")
print(ret)  # python = 778
  1. splite
    根据匹配进行切割字符串,并返回一个列表
ret = re.split(r":| ", "info:xiaoli 22 shandong")
print(ret)  # ['info', 'xiaoli', '22', 'shandong']

相关文章

  • java正则使用

    正则切割 正则捕获 正则完全匹配

  • regexp 正则包

    正则对象 正则使用都是通过创建对应的正则对象,调用对象方法所实现。 新建正则对象 正则对象属性方法 正则方法 一般...

  • 个人书画作品之四

    写楷心得 字正则心正,心正则人正,人正则德正,德正则身正, 身正则形正,形正则意正, 意正则气正,一气化三清。 ...

  • 第七天正则表达式

    正则表达式的理念: 正则的使用方法: 正则里string两个方法: 使用正则找字母的几种写法: 正则的转义: 正则...

  • 心正笔正

    心正则意正!心正则身正! 心正则言正!心正则行正! 心正则笔正!心正则字正! 心正则并勤!勤尽则字成! 心清则目明...

  • git一次删除多个文件

    正则 非正则

  • day17-正则表达式

    正则表达式符号含义 通配符与正则区别? 正则表达式中注意事项 正则表达式分类: 基本正则(BRE) ※ 扩展正则表...

  • Js正则匹配常用案例

    1 用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 前端表单验证常用的15个JS正则表达式

    1.用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 2019-06-15 JS

    email正则, url正则

网友评论

      本文标题:正则

      本文链接:https://www.haomeiwen.com/subject/byptrctx.html