python正则表达式学习记录

前端AI提效三大关键切口:组件生成、接口补全与上下文增强 AI编程工具正深度融入前端开发流程,其核心价值不在于替代编码,而在于重构人机协同的工作流。从基础概念看,AI辅助开发本质是将结构化输入(如组件契约、OpenAPI规范)转化为可验证输出;原理上依赖提示工程、RAG增强与上下文感知;技术价值体现在释放工程师于重复性认知劳动,聚焦设计决策、状态机建模与系统治理;典型应用场景覆盖中后台系统快速搭建、跨团队接口联调加速及遗留项目技术栈迁移;本文聚焦‘组件级生成闭环’‘接口联调自动化补全’‘跨技术栈上下文理解增强’三大经实测验证的小时级提效切口,提供可落地的工程化路径 阅读详情

一、正则表达式需要用到的模块和函数

1、导入模块:import re

2、使用模块中的函数:re.match(正则表达式, 要匹配的字符串),re.search(正则表达式, 要匹配的字符串)

import re


def simple():
    """
    初识正则表达式
    re.rematch(正则表达式, 要匹配的字符串)
    :return:
    """
    result = re.match("www", "www.baidu.com")
    if result:
        print(result.group())


if __name__ == '__main__':
    simple()

输出结果:

www

 二、匹配单个字符

字符功能
.匹配任意 1 个字符(除了\n)
[ ]匹配[ ]中列举的字符
\d匹配数字, 即 0-9 decimal
\D匹配非数字, 即不是数字
\s匹配空白, 即 空格, tab 键, space,换行,回车都属于空白
\S匹配非空白
\w匹配单词字符, 即 a-z、 A-Z、 0-9、 _ (汉字) word
\W匹配非单词字符
def single_char_match():
    """
    匹配单个字符
    :return:
    """
    ret = re.match(".", "m")  # . 匹配任意字符
    print(ret.group())
    print("-" * 100)

    ret = re.match("he.lo", "hello")
    print(ret.group())
    print("-" * 100)

    ret = re.match("[hH]", "Hello")  # []匹配所列举的字符
    print(ret.group())
    print("-" * 100)

    ret = re.match("[a-z]", "hello")  # []内可以标注一个范围:a-z
    print(ret.group())
    print("-" * 100)

    ret = re.match("[a-z]ello", "hello world")
    print(ret.group())
    print("-" * 100)

    ret = re.match("嫦娥\d号", "嫦娥6号")  # \d匹配数字
    print(ret.group())
    print("-" * 100)

    ret = re.match("你\w", "你好啊")
    print(ret.group())


if __name__ == '__main__':
    single_char_match()

输出结果:

m
----------------------------------------------------------------------------------------------------
hello
----------------------------------------------------------------------------------------------------
H
----------------------------------------------------------------------------------------------------
h
----------------------------------------------------------------------------------------------------
hello
----------------------------------------------------------------------------------------------------
嫦娥6号
----------------------------------------------------------------------------------------------------
你好

三、匹配多个字符

多字符匹配相关的字符必须要用在单字符匹配字符之后

字符功能
*匹配前一个字符出现 0 次或者无限次, 即可有可无
+匹配前一个字符出现 1 次或者无限次, 即至少有 1 次
?匹配前一个字符出现 1 次或者 0 次, 即要么有 1 次, 要么没有
{m}匹配前一个字符出现 m 次
{m,n}匹配前一个字符出现从 m 到 n 次
def multi_char_match():
    """
    匹配多个字符
    :return:
    """
    ret = re.match(r"[A-Z][a-z]*", "M")
    print(ret.group())
    print("-" * 100)

    ret = re.match(r"[A-Z][a-z]*", "Aabcd")
    print(ret.group())
    print("-" * 100)

    # 匹配多字符的格式只与前一个单字符格式组合使用,此处*与[a-z]组合使用
    ret = re.match(r"[A-Z][a-z]*", "AbbbbAAAA")
    print(ret.group())
    print("-" * 100)

    code_name = ["name1", "_name", "123name", "__name__"]
    for name in code_name:
        ret = re.match(r"[a-zA-Z_]+\w", name)
        if ret:
            print(f"{ret.group()} 符合命名规则")
        else:
            print(f"{name} 不符合命名规则")
    print("-" * 100)

    ret = re.match(r"[0-9]?[0-9]", "6")  # 此时的6匹配的是后面的[0-9]
    # ret = re.match(r"\d?\d", "6") # [0-9]可以直接写成\d
    print(ret.group())
    print("-" * 100)

    ret = re.match(r"[1-9]?\d", "09")
    print(ret.group())
    print("-" * 100)

    ret = re.match(r"[a-zA-Z_0-9]{6}", "123abc456def789")
    print(ret.group())
    print("-" * 100)

    # 至少出现6个匹配字符,最多出现20个匹配字符
    ret = re.match(r"[a-zA-Z_0-9]{6,20}", "123abc456def&&&&789")
    print(ret.group())
    print("-" * 100)


if __name__ == '__main__':
    multi_char_match()

输出结果:

M
----------------------------------------------------------------------------------------------------
Aabcd
----------------------------------------------------------------------------------------------------
Abbbb
----------------------------------------------------------------------------------------------------
name1 符合命名规则
_name 符合命名规则
123name 不符合命名规则
__name__ 符合命名规则
----------------------------------------------------------------------------------------------------
6
----------------------------------------------------------------------------------------------------
0
----------------------------------------------------------------------------------------------------
123abc
----------------------------------------------------------------------------------------------------
123abc456def
----------------------------------------------------------------------------------------------------

 四、匹配开头和结尾

字符功能
^匹配字符串开头
$匹配字符串结尾
def begin_end_match():
    """
    匹配开头和结尾
    :return:
    """
    # 一般match函数无需设置开头^匹配,但是如果用的是search,则需要用到^
    ret = re.search("hello", "nihao hello")
    print(ret.group())
    print("-" * 100)

    ret = re.search("^hello", "nihao hello")
    if ret:
        print(ret.group())
    else:
        print("hello不在开头")
    print("-" * 100)

    web_name = ["http:zhangwei_shi_ge_hun_dan.com", "www.baidu.com", "https://www.bilibili.com/",
                "www.http.https.com"]
    for name in web_name:  # 找到https:开头的网址
        ret = re.search(r"^http:[^ ]+", name)  # ^ 和 http:连用,[^ ]和+连用-->[^ ]代表非空白
        if ret:
            print(f"http网址为{ret.group()}")
        else:
            print(f"{name}不是http网站")
    print("-" * 100)

    email_name = ["xiaoming@163.com", "88888888@qq.com", "James@163.commmmmmm", "111@1631com"]
    for name in email_name:
        # \w 和 + 连用, @163\.com和$连用, \.代表转义,因为.在正则表达式中代表任意字符
        ret = re.match(r"\w+@163\.com$", name)  
        if ret:
            print(f"符合163格式的邮箱:{ret.group()}")
        else:
            print(f"不符合163格式的邮箱:{name}")
    print("-" * 100)


if __name__ == '__main__':
    begin_end_match()

输出结果:

hello
----------------------------------------------------------------------------------------------------
hello不在开头
----------------------------------------------------------------------------------------------------
http网址为http:zhangwei_shi_ge_hun_dan.com
www.baidu.com不是http网站
https://www.bilibili.com/不是http网站
www.http.https.com不是http网站
----------------------------------------------------------------------------------------------------
符合163格式的邮箱:xiaoming@163.com
不符合163格式的邮箱:88888888@qq.com
不符合163格式的邮箱:James@163.commmmmmm
----------------------------------------------------------------------------------------------------

 五、匹配分组

字符功能
|匹配左右任意一个表达式
(ab)将括号中字符作为一个分组
\num引用分组 num 匹配到的字符串
(?P<name>)分组起别名
(?P=name)引用别名为 name 分组匹配到的字符串
def group_match():
    """
    匹配分组
    :return:
    """
    # 匹配0到100
    # [1-9]?匹配0个或者1个1-9的字符,\d$代表必须以数字结尾,| 代表满足两边任意一个即可
    ret = re.match(r"[1-9]?\d$|100", "99")
    print(ret.group())
    print("-" * 100)
    # 如果\d后没有$,则出现 00,01,02,03...09时,\d会默认匹配到0
    # ret = re.match(r"[1-9]?\d", "08")
    # print(ret.group())
    # print("-" * 100)

    email_name = ["xiaoming@163.com", "88888888@qq.com", "James@163.commmmmmm", "111@1631com"]
    # 匹配出163邮箱和qq邮箱
    for name in email_name:
        ret = re.match(r"\w+@(163|qq)\.com$", name)  # 加了()代表里面匹配到的内容所属一个分组
        if ret:
            print(f"符合要求的邮箱:{ret.group()}")
        else:
            print(f"不符合要求的邮箱:{name}")
    print("-" * 100)

    dir_path = "D:\pythonProject\project1\current_project.py"
    # \在正则表达式用作转义字符,故用 \\ 来代表字符 \
    ret = re.match(r"([^\\]+)\\([^\\]+)\\([^\\]+)\\([^\\]+)", dir_path)
    print(ret.group())
    print(ret.group(1))
    print(ret.group(2))
    print(ret.group(3))
    print(ret.group(4))
    print("-" * 100)

    # 分组后还可以用 \num代表第几个分组,如\1代表第一个分组
    ret = re.match(r"<([a-zA-Z]*)>\w*</\1>", "<html>hh</html>")  # \1 匹配的就是 ([a-zA-Z]*)
    print(ret.group())
    print("-" * 100)

    ret = re.match(r"<(\w+)><(\w+)>.+</\2></\1>", "<html><w1>www.baidu.com</w1></html>")
    print(ret.group())
    print("-" * 100)

    # 由于\1 \2等写法易读性较差,所以可以通过(?P<name>)起名字,并通过(?P=name)格式引用
    ret = re.match(r"<(?P<name1>\w+)><(?P<name2>\w+)>.+</(?P=name2)></(?P=name1)>",
                   "<html><w1>www.bilibili.com</w1></html>")
    print(ret.group())


if __name__ == '__main__':
    group_match()

输出结果:

99
----------------------------------------------------------------------------------------------------
符合要求的邮箱:xiaoming@163.com
符合要求的邮箱:88888888@qq.com
不符合要求的邮箱:James@163.commmmmmm
不符合要求的邮箱:111@1631com
----------------------------------------------------------------------------------------------------
D:\pythonProject\project1\current_project.py
D:
pythonProject
project1
current_project.py
----------------------------------------------------------------------------------------------------
<html>hh</html>

六、re模块中其他函数的使用

1、相关函数的使用

def add(x):
    result = x.group()
    return str(int(result) + 100)


def other_function():
    """
    re模块中的其他函数:search findall sub split
    :return:
    """
    ret = re.search(r"\d+", "阅读次数:9999,点赞次数:888")
    print(ret.group())
    print("-" * 100)

    ret = re.findall(r"\d+", "阅读次数:9999,点赞次数:888")  # 会返回一个list
    print(ret)
    print("-" * 100)

    # sub将匹配到的数据进行进行替换
    ret = re.sub(r"\d+", "1000", "int a = 997")
    print(ret)
    ret = re.sub(r"\d+", lambda x: str(int(x.group()) + 100), "int a = 1200")
    print(ret)
    ret = re.sub(r"\d+", add, "int a = 1300")
    print(ret)
    print("-" * 100)

    # sub可选择替换的数量
    text = "apple apple apple apple"
    pattern = r"apple"
    replacement = "orange"

    new_text = re.sub(pattern, replacement, text, count=3)
    print(new_text)
    print("-" * 100)


def find_second_match(pattern, text):
    matches = re.finditer(pattern, text)
    try:
        next(matches)  # 跳过第一个匹配项
        second_match = next(matches)  # 获取第二个匹配项
        return second_match.group()
    except StopIteration:
        return None


def use_finditer():
    """
    使用finditer
    :return:
    """
    # 示例用法
    text = "abc123def456ghi789"
    pattern = r"\d+"
    second_match = find_second_match(pattern, text)
    print(second_match)


if __name__ == '__main__':
    other_function()
    print("-----------finditer的使用:-------------")
    use_finditer()
    print("-----------finditer的使用:-------------")

 输出结果:

9999
----------------------------------------------------------------------------------------------------
['9999', '888']
----------------------------------------------------------------------------------------------------
int a = 1000
int a = 1300
int a = 1400
----------------------------------------------------------------------------------------------------
orange orange orange apple
----------------------------------------------------------------------------------------------------
-----------finditer的使用:-------------
456
-----------finditer的使用:-------------

2、迭代器 

def number_generator(start=0):
    while start <= 5:  # 无限循环,持续生成数字
        yield start  # 程序在这里暂停,start值被return回来,下次函数进来也从这开始
        start += 1
    return


def use_generator():
    """
    使用生成器,理解next
    :return:
    """
    # # 示例使用
    gen = number_generator()  # 创建生成器实例,从0开始
    print(type(gen))
    # print(next(gen))  # 输出 0
    # print(next(gen))  # 输出 1
    # print(next(gen))  # 输出 2
    for i in gen:
        print(i)


if __name__ == '__main__':
    use_generator()

输出结果:

<class 'generator'>
0
1
2
3
4
5

七、findall函数的一些问题

def use_findall():
    """
    findall函数的一些机制问题
    :return:
    """
    s = 'hello world, now is 2020/7/20 18:48, 现在是2020年7月20日18时48分。'
    ret_s = re.sub(r'年|月', r'/', s)
    ret_s = re.sub(r'日', r' ', ret_s)
    ret_s = re.sub(r'时|分', r':', ret_s)
    print(ret_s)
    print("-" * 100)

    # findall函数有bug,如果pattern中有分组()则执行findall后会返回分组的内容,所以需要在分组中加上?:
    # findall 内部的设计机制,在分组前面加?:
    pattern = re.compile(r'\d{4}/[01]?[0-9]/[1-3]?[0-9]\s(?:0[0-9]|1[0-9]|2[0-4])\:[0-5][0-9]')
    ret = pattern.findall(ret_s)
    print(ret)
    print("-" * 100)

    pattern1 = re.compile(r'\d{4}/[01]?[0-9]/[1-3]?[0-9]\s(0[0-9]|1[0-9]|2[0-4])\:[0-5][0-9]')
    # search 没问题
    ret1 = pattern1.search(ret_s)
    print(ret1.group())


if __name__ == '__main__':
    use_findall()

 输出结果:

hello world, now is 2020/7/20 18:48, 现在是2020/7/20 18:48:。
----------------------------------------------------------------------------------------------------
['2020/7/20 18:48', '2020/7/20 18:48']
----------------------------------------------------------------------------------------------------
2020/7/20 18:48 

 八、re模块中的split函数

# re模块的split函数可以根据多个字符进行切割
def use_split():
    # 根据: | 空格对后续字符串进行切割
    ret = re.split(r":| ", "info:xiaoZhang 33 shandong")
    print(ret)


if __name__ == '__main__':
    use_split()

输出结果:

['info', 'xiaoZhang', '33', 'shandong']

九、正则表达式的贪婪与非贪婪 

def greedy_and_no_greedy():
    """
    python的正则表达式默认是贪婪的,会包含尽可能多的字符串,通过加?可以变为非贪婪
    :return:
    """
    s = "This is a number 234-235-22-423"
    # .+ 会一直读取到字符3,因为有\d所以4不能被.+读完
    ret = re.match(r".+(\d+-\d+-\d+-\d+)", s)
    print(ret.group(1))
    print("-" * 100)
    # 加了?后变为非贪婪
    ret = re.match(r".+?(\d+-\d+-\d+-\d+)", s)
    print(ret.group(1))
    print("-" * 100)
    print(re.match(r"aa(\d+)", "aa2343ddd").group(1))
    print(re.match(r"aa(\d+?)", "aa2343ddd").group(1))
    print(re.match(r"aa(\d+)ddd", "aa2343ddd").group(1))
    # 字符要匹配ddd,所以\d+?就算是非贪婪也必须读完2343
    print(re.match(r"aa(\d+?)ddd", "aa2343ddd").group(1)) 


if __name__ == '__main__':
    greedy_and_no_greedy()

 输出结果:

4-235-22-423
----------------------------------------------------------------------------------------------------
234-235-22-423
----------------------------------------------------------------------------------------------------
2343
2
2343
2343

十、函数的一些参数

# re.A 不让\w 匹配汉字
# re.I 是否区分大小写
# re.S 可以让.匹配上\n
def use_option():
    print(re.match(r'\w*', 'abc函', flags=re.A).group())
    print("-" * 100)
    print(re.match(r'a*', 'aA', flags=re.I).group())
    print("-" * 100)
    print(re.match(r'.*', 'abc\ndef', flags=re.S).group())


if __name__ == '__main__':
    use_option()

 输出结果:

abc
----------------------------------------------------------------------------------------------------
aA
----------------------------------------------------------------------------------------------------
abc
def

避坑实录:用certificate-manager重置vCenter 6.7证书时遇到的三个致命陷阱 本文详细解析了使用certificate-manager重置vCenter 6.7证书时可能遇到的三大致命陷阱,包括进度卡在85%的服务启动僵局、脚本突然退出的静默杀手以及密码错误锁死的隐藏机制。通过实战验证的解决方案和高级恢复技巧,帮助系统管理员有效避免vCenter环境瘫痪,确保证书更新过程顺利进行。 阅读详情

相关推荐

ndnSIM学习笔记(一)

在接下来的一段时间要用ndnSIM来做自己的仿真网络,需要系统的学习相关内容,以下为内容记录。1.安装      1.1核心依赖(必需的)             • python &gt;= 2.6             • libsqlite3             • libcrypto++             • pkg-config             • Boost lib...

gaonjzzz的博客 2985

[学习记录]python正则表达式

1.首先先介绍常见的元字符 表示法 描述 示例 literal 匹配字符串的字面值literal python re1|re2 匹配re1或re2 python|java . 匹配\n之外的任意字符 pyth.n ^ 匹配字符串起始部分 (^begin)(得到的是begin开头) $ 匹配字符串终止部分...

diejingpo2316的博客 83

从‘查理复用’到TM52F1363:深入剖析5脚188数码管的驱动原理与避坑指南

本文深入解析了5脚188数码管的驱动原理,重点介绍了查理复用技术如何通过5个IO引脚高效驱动188段显示,并详细探讨了TM52F1363单片机的寄存器配置与驱动实现。文章还提供了常见问题的解决方案和性能优化技巧,帮助开发者避免实际应用中的各种陷阱。

weixin_29159441的博客 478

python学习记录2—正则表达式

正则表达式1. 一些基本规则正则表达式可以用来匹配字符串,判断输入是否合法,其中:        \d可以匹配一个数字,\w可以匹配一个字母或数字,.可以匹配任意字符,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符,\s可以匹配一个空格(也包括Tab等空白符),可以用[]表示范围,特殊字符需要用\转义,比如\-;  ...

爱哭的小飞熊 242

解决LangChain4j报错HTTP/1.1 header parser received no bytes

当使用调用自己部署的大模型服务时报错: 报错信息如下:

weixin_44455388的博客 2336

Apache Hop环境搭建实战:从零到一的下载、安装与配置指南

本文详细介绍了Apache Hop环境搭建的全过程,包括下载、安装与配置指南。从选择正确的JDK17版本到设置关键环境变量,再到启动GUI界面和解决常见问题,提供了全面的实战指导。适合数据工程师和ETL开发者快速上手这一强大的数据集成工具。

weixin_42634811的博客 574

关于python正则表达式_学习记录

常见、好用的爬虫框架有Scrapy、XPATH、CSS。具体可以参考以下链接。​​​​​​有哪些常见、好用的爬虫框架?Scrapy、XPATH、CSS框架一文详解 - 知乎 (zhihu.com)b本文主要介绍正则表达式相关知识与利用正则表达式进行爬虫数据采集。

Ohoaaa的博客 144

K8s认证文件丢失的应急处理与恢复策略

本文详细介绍了Kubernetes(K8s)认证文件丢失时的应急处理与恢复策略。从快速诊断问题范围到不同场景的临时解决方案,再到深度恢复方案(无损重建、部分重置、完全重建),提供了全面的操作指南。同时强调了生产环境中的防丢失设计、高可用集群的特殊处理以及日常运维建议,帮助运维人员有效应对认证文件丢失的紧急情况。

weixin_33743248的博客 327

python为例,正则表达式学习记录

python为例,正则表达式学习记录"^","$","."的使用例子"*","+","?"的使用例子"*","+","?"的非贪婪模式使用例子"{}"的使用例子"[]"的使用例子"|"的使用例子"("")"的使用例子 “^”,"$","."的使用例子 “.” 匹配除换行以外的任意字符 “^” 匹配字符串的起始符 "$“ 匹配字符串的结尾或字符串结尾的换行符之前 import re str1="10...

tony_joy的博客 299

华为OD机试2025A卷 - 用户调度问题(Java & Python& JS & C++ & C )

题目要求每个用户依次选择当前所能选择的最小资源消耗策略,并且若有多个策略的资源消耗相同,则选择最后一个策略。每个用户的选择是独立的,只考虑该用户的策略和相邻用户的约束,不考虑整个调度序列的全局资源消耗。每个用户根据自己的当前状态(即自己的三种选择的资源消耗)做出局部最优选择:在当前可选的策略中,选择消耗最小的那个。如果有多个最小值,则选择最后一个(根据题意)。这一选择是局部的最优,即在当下最有利的选择,但并不保证最终的整体系统资源消耗是最小的。

算法大师! 1万+

uniapp [全端兼容] - 详细实现下拉筛选菜单功能组件,下拉式筛选菜单效果,类似电商美团点击筛选项底部弹出列表点击选择后自动收起(详细示例代码,全端兼容小程序、安卓苹果app、h5网页、nvue

uni-app,vue2,vue3,向下弹出菜单包含筛选功能,日期筛选,下拉框选择器,下拉多条件筛选,下拉式筛选菜单,uniApp如何实现条件下拉筛选,Uniapp官方条件筛选组件,下拉框式条件筛选插件组件,最好用的插件组件,多端兼容,下拉菜单筛选,过滤筛选列表,下拉筛选栏,多列联动的条件筛选,下拉菜单地区和筛选,微信小程序,支付宝小程序,h5网页,移动端网站,安卓app,苹果app,nvue,uniapp所有平台兼容,下拉菜单筛选,下拉式条件筛选,下拉列表,点击排序,级联筛选,uniapp实现下拉筛选

🏆 前端领域优质创作者 1万+

Python正则表达式学习网址记录

Python正则表达式学习网址记录

subtitle_的博客 434

DSP的CLA调试技巧

本文介绍了基于TMS320F28377D的CLA(Control Law Accelerator)开发实战教程,涵盖基础配置、编程、调试与优化全流程。主要内容包括:CLA核心特性及其作为实时控制协处理器的优势;开发环境搭建与工程配置要点;CLA任务调度、数据交换及编程约束;调试技巧如断点设置和性能分析方法;进阶应用案例(批量除法运算)及优化策略;以及推荐的学习资源和硬件平台。教程强调数据一致性和任务同步问题,为快速上手CLA开发提供实用指导。

1042

正则表达式——python(学习记录)

1. 正则表达式基础、 简单介绍: 正则

wangyezi19930928的专栏 2080

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Python学习记录——13.正则表达式

文章目录1.正则表达式简介2.正则表达式使用3.re模块4.切分字符串5.分组6.贪婪匹配7.编译 1.正则表达式简介 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是...

赈川 182

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python之正则表达式学习记录(一)

** 一、re模块 ** # 导入re模块 import re # 使用match方法进行匹配操作 result = re.match(正则表达式,要匹配的字符串) # 如果上一步匹配到数据的话,可以使用group方法来提取数据 result.group() 简单demo: 二、匹配单个字符 匹配任意1个字符(除了\n) [] 匹配[]中列举的字符 \d 匹配数字,即0-9 \s 匹配空白,即空格、tab键 \w 匹配单词字符,即a-z,A-Z,0-9、_ 三、匹配多个字符

爱笑Dandi 277

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

记录Python正则表达式学习

利用正则表达式提取http(s)链接 网上找了很多方法,都仔细读懂了,但是自己发现很多html页面中其实可以用更巧妙的方法去提取http链接 html页面例 关键代码: // An highlighted block reg = r'http[s]?://[^"]+' res = re.findall(reg, text) for i in res: print(i) 结果: 这里用的思想是,html中url链接都是一组双引号中的,我只需要针对链接后面的那个(出现的第一个)双引号即可 ..

qq_43505865的博客 333

python正则表达式的学习记录

match和findall的区别以及有括号和无括号的区别 strvar = "hello\n\nworld" find_re = re.compile("hello[.|\n]*([\S]*)"); rs = find_re.match(strvar); print rs.groups()#输出('world',) rs = find_re.findall(s...

99

Python学习记录:正则表达式

Symblosliteral 匹配字符串的值 这个比较简单rel1|rel2 匹配rel1或rel2的表达式然后主要就是各种特殊的字符了 如果需要匹配特殊字符需要加入转义符号:. 匹配任何字符 除了换行符号^ 匹配字符串开始>>> s'111111622222227'>>> print re.findall('^[1-9]',s)['...

weixin_34112030的博客 81

Python 正则表达式学习记录1-findall的用法

Python正则表达式-finall方法

renshaoxiong001的博客 523

python3正则表达式学习及使用记录

2017.12.23 发现房天下论坛版面改版了,之前用的beautifulsoup写的,发现改动很大,这也说明了BS4基于树结构的查询方式的不便之处,页面结构一旦修改,就很难做到代码重用,于是将抓取论坛的函数中beautifulsoup全部换掉了,换成了正则。 (注释部分是beautifulsoup的方式,其中还有navigable类型转换问题没有解决,不可直接运行;未注释的部分是正则表达式的

zoe9698的博客 356

Python中的正则表达式学习记录(一)

在学习完Python3一些基础内容后,再深入的了解下“正则表达式”的相关内容。正则表达式(regular expression)了一种字符串匹配的模式(pattern),可以用来一个串是否含有某种子串、将匹配的子串或者从某个串中符合某个条件的子串等。例如:+ 号代表前面的字符必须至少出现一次(1次或多次)。* 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。?问号代表前面的字符最多只可以出现一次(0次或1次)。构造正则表达式的。也就是用多种可以将小的。

fmislx007的博客 129

Python3中的正则表达式学习记录(三)

这两个还有更多的含义,前者为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,后者为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。\1 指定第一个子匹配项。如果它位于要匹配的字符串的开始,它在单词的开始处查找匹配项。反向引用的最简单的、最有用的应用之一,是提供查找文本中两个相同的相邻单词的匹配项的能力。若要匹配一行文本的结束处的文本,在正则表达式的结束处使用 $ 字符。

fmislx007的博客 223

Python3中的正则表达式学习记录(四)

是字面的字符,也就是说,他们表示该字母本身,数字也是一样的。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。其他的特殊符号,可以用在前面加上反斜杠,如反斜杠本身用 \\ 表示,句号 . 用 \. 表示,以此类推。默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 之后, . 中包含换行符 \n。标记也称为修饰符,正则表达式的标记用于指定额外的匹配策略。

fmislx007的博客 167

python学习记录3【正则表达式(regex)基础】

学习python时看到的正则表达式这个东西,感到一脸迷茫 查了一些资料后发现这并不是我的错0。0 正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。能按照某种模式区配一系列有相似有相似特征的字符串。 正则表达式特殊符号和字符等可直接百度得到 https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E...

叶柖的博客 775

Python正则表达式学习记录2-正则表达式符号的使用

Python正则表达符号

renshaoxiong001的博客 189
上一篇: 深度学习记录(线性表示)
下一篇: matplotlib学习记录
hellogarbage
博客等级 码龄6年 145粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值