Day20-Python基础学习之正则表达式和递归(完结)

正则表达式

基础

# 正则表达式
import re
​
s = "python itcast"
# match 从头开始匹配 头部不匹配返回None
result = re.match("python", s)
print(result)
print(result.span())
print(result.group())
​
# search 从开头找到结尾搜索,找到第一个就停止
s = "1python itcast python"
result = re.search("python", s)
print(result)
​
# findall 搜索全部匹配的
result = re.findall("python", s)
print(result)

元字符匹配

字符 功能
. 匹配任意1个字符(除\n),\ .匹配.
[] 匹配中括号中的所有字符
\d 匹配数字
\D 匹配非数字
\s 匹配空白
\S 匹配非空白
\w 匹配单词字符小写大写数字下划线
\W 匹配非单词字符,即特殊字符

数量匹配

字符 功能
* 匹配前一个字符出现0-∞次
+ 匹配前一个字符出现1-∞次
匹配前一个字符出现0或1次
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符最少m次
{m,n} 匹配前一个字符出现m到n次
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配一个单词的边界
\B 匹配非单词边界
| 匹配左右任意一个表达式
() 将括号中的字符作一个分组
# 元字符匹配
s = "itcast1 @@python2 !!666 ##itheima3"
# 找出全部数字
result = re.findall(r'\d', s)    # r代表字符串里转义字符无效
print(result)
result = re.findall(r'\W', s)
print(result)
result = re.findall(r'[a-zA-Z0-9]', s)
print(result)
​
# 匹配账号,只能由字母和数字组成,6-10位
r = '^[0-9a-zA-Z]{6,10}$'   # ^和$表示从头到位匹配
s = '124211'
result = re.findall(r, s)
print(result)
​
# 匹配QQ号,纯数字,长度5-11,第一位不为0
r = '[1-9][0-9]{4,10}'  # 因为第一位已经占一位了
s = '012345678'
print(re.findall(r, s))    # 这里判断的是字串,所以有结果
​
# 匹配邮箱地址
r = '([\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+)'    # 小括号+‘*’表示这组内容出现几次都行
# 整体括号是因为findall方法只会输出组,所以要变成一个组
s = 'a.b.c.d.e.f.g@qq.com.a.cn'
print(re.findall(r, s))

递归

# 递归
# 通过递归找出一个指定文件夹的全部文件
import os
​
def test_os():
    print(os.listdir("D:/test"))   # 列出路径下的内容
    print(os.path.isdir("D:/test"))   # 判断指定路径是不是文件夹
    print(os.path.exists("D:/test"))   # 判断指定路径是否存在
    
file_list = []
def get_files(path):
    if os.path.isdir(path):
        for f in os.listdir(path):
            new_path = path + "/" + f
            if os.path.isdir(new_path):
                get_files(new_path)
            else:
                file_list.append(new_path)
    else:
        print("路径不存在")
        return []
    
    return file_list

相关推荐

  1. Day20-Python基础学习表达式(完结)

    2024-04-25 21:52:03       33 阅读
  2. Python学习路-表达式

    2024-04-25 21:52:03       59 阅读
  3. 表达式基础学习

    2024-04-25 21:52:03       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 21:52:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 21:52:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 21:52:03       82 阅读
  4. Python语言-面向对象

    2024-04-25 21:52:03       91 阅读

热门阅读

  1. css八股

    2024-04-25 21:52:03       33 阅读
  2. verilog 语法及特点

    2024-04-25 21:52:03       35 阅读
  3. Android高手过招之浮动搜索框(SearchManager)

    2024-04-25 21:52:03       36 阅读
  4. 黑马点评学习笔记总结

    2024-04-25 21:52:03       38 阅读
  5. SQL之CASE WHEN用法详解

    2024-04-25 21:52:03       31 阅读
  6. C++ day3

    C++ day3

    2024-04-25 21:52:03      34 阅读
  7. 传输层协议

    2024-04-25 21:52:03       24 阅读
  8. 跨域问题+解决跨域express

    2024-04-25 21:52:03       37 阅读
  9. 如何使用PHP进行邮件发送?

    2024-04-25 21:52:03       34 阅读
  10. 【MHA】MySQL高可用MHA介绍2-安装,配置,要求与限制

    2024-04-25 21:52:03       24 阅读