学习python仅此一篇就够了(正则表达式,递归)

正则表达式

  • re.match(匹配规则,被匹配字符串)

从被匹配字符串开头进行匹配,匹配成功返回匹配对象,匹配不成功返回空。

import re

s = "python java c++"
result = re.match("python", s)
print(result) #
print(result.span()) #(0, 6)
print(result.group()) #python
  • search(匹配规则,被匹配字符串)

搜索整个字符串,找出匹配的。从前向后,找到第一个后,就停止,不会继续向后。

s = "1python java c++"
result = re.search("python", s)
print(result) #
print(result.span()) #(1, 7)
print(result.group()) #python
  • findall(匹配规则, 被匹配字符串)

匹配整个字符串,找出全部匹配项

s = "1python java c++python"
result = re.findall("python", s)
print(result) #['python', 'python']

元字符匹配

字符 功能
. 匹配任意一个字符除了(\n)
[] 匹配[]中的列举的字符
\d 匹配数字,即0-9
\D 匹配非数字
\s 匹配空白,即空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z,A-Z,0-9
\W 匹配非单词字符

数量匹配:

字符 功能
* 匹配前一个规则的字符出现0至无数次
+ 匹配前一个规则的字符出现1至无数次
? 匹配前一个规则的字符出现0次或1次
{m} 匹配前一个规则的字符出现m次
{m,} 匹配前一个规则的字符至少出现m次
{m,n} 匹配前一个规则的字符出现m到n次

边界匹配:

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配一个单词的边界
\B 匹配非单词边界

分组匹配:

字符 功能
| 匹配左右任意一个表达式
() 将括号中字符作为一个分组

递归

import os

def test():
    print(os.listdir("E:/test")) #['1.txt', '2.txt', 'a', 'b']
    # print(os.path.isdir("E:/test/a")) #判断是否为文件夹
    # print(os.path.exists("E:/test")) #判断指定路径是否存在

def get_from(path):
#从指定的文件夹中获取文件夹列表
    list = []
    if os.path.exists(path):
        for f in os.listdir(path):
            new_path = path + "/" + f
            if os.path.isdir(new_path):
                list += get_from(new_path)
            else:
                list.append(new_path)
    else:
        print(f"指定的目录{path},不存在")
        return []

    return list

if __name__ == '__main__':
    print(get_from("E:/test"))

你可能感兴趣的:(python,学习,python,java)