菜鸟的python正则表达式学习过程

本文详细介绍了正则表达式的基本概念,包括常用字符集、量词和模式匹配等,通过实例演示了如何在Python中使用正则表达式进行字符串处理,如匹配、查找和替换等操作,适合初学者快速掌握正则表达式的应用。

一.正则基本概念:
1.
\d ——匹配数字;
\w ——匹配数字+字母
\b ——匹配单词的便捷
\s ——匹配空格符
[特殊字符] ——匹配特殊字符
2.
+——匹配至少一个字符
* ——匹配任意个字符
? ——匹配0或者1个字符
{n} ——匹配n个字符
{n,m} ——匹配n-m个字符
3.
[] ——表示精确匹配
| ——表示or的意思
^ ,$ ——分别表示行的开始和结束

二.python中的正则相关的函数,可查看菜鸟教程:
https://www.runoob.com/python/python-reg-expressions.html

  1. re.match(【正则表达式】,【待匹配的字符串】),返回值是object对象
    eg: import re
    //r" xxx"的表达式python中常用的正则的表达方式,不是必须的但是使用更加友好
    re.match(r’^\d{3}-\d{3,8}$’, ‘010-12345’)
    输出:<_sre.SRE_Match object; span=(0, 9), match=‘010-12345’>
  2. 切分字符串
    re.split(r’\s+’, ‘a b c’)
    输出:[‘a’, ‘b’, ‘c’]
  3. 分组,用()表示的就是要提取的分组(Group)。比如:
    ^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码:group(0)永远是原始字符串,group(1)、group(2)……表示第1、2、……个子串。
    m = re.match(r’^(\d{3})-(\d{3,8})$’, ‘010-12345’)
    m.group(0)
    输出:‘010-12345’
  4. findall(r’ xxx’,s) ——s字符串中符合正则表达式的子串

三、贪婪模式和非贪婪模式
贪婪模式是从后往前匹配,匹配不上就去掉字符串最后一位,直到匹配成功;
非贪婪模式也叫作懒惰模式,从前往后匹配,一旦匹配成功就停止;
eg:s = ababaaba
p1 = r’\a.b’
贪婪模式匹配结果:ababaab
非贪婪模式匹配结果:ab

四、练习题

  1. 验证email地址
    def is_valid_email(addr):
    addr_ex = re.compile(r’[0-9a-zA-Z._\s]+[@][0-9a-zA-Z._]’)
    if addr_ex.match(addr):
    return True
    else:
    return False

    //测试:
    assert is_valid_email(‘someone@gmail.com’)
    assert is_valid_email(‘bill.gates@microsoft.com’)
    assert not is_valid_email(‘bob#example.com’)
    assert not is_valid_email(‘mr-bob@example.com’)
    print(‘ok’)

  2. 匹配一行文字中的所有开头的字母内容
    s1 = “i love you not because of who you are, but because of who i am when i am with you”
    content = re.findall(r"\b\w", s1)
    print (content)

    //匹配一行文字中的所有开头的数字内容
    s2=“i love you not because 12sd 34er 56df e4 54434”
    content2 = re.findall(r’\b\d’,s2)
    print(content2)

  3. #将以下网址提取出域名:
    s = “”“http://www.interoem.com/messageinfo.asp?id=35`
    http://3995503.com/class/class09/news_show.asp?id=14
    http://lib.wzmc.edu.cn/news/onews.asp?id=769
    http://www.zy-ls.com/alfx.asp?newsid=377&id=6
    http://www.fincm.com/newslist.asp?id=415"”"
    p = r’(http://.+?/).+’
    print(re.sub(p,lambda x :x.group(1),s))

  4. 提取出如下字符串中的单词:
    s = “hello world ha ha”
    p = r’\s+’
    print(re.split(p,s))
    print(re.findall(r’\w+’,s))

同步定位与地图构建(SLAM)技术为移动机器人或自主载具在未知空间中的导航提供了核心支撑。借助该技术,机器人能够在探索过程中实时构建环境地图并确定自身位置。典型的SLAM流程涵盖传感器数据采集、数据处理、状态估计及地图生成等环节,其核心挑战在于有效处理定位与环境建模中的各类不确定性。 Matlab作为工程计算与数据可视化领域广泛应用的数学软件,具备丰富的内置函数与专用工具箱,尤其适用于算法开发与仿真验证。在SLAM研究方面,Matlab可用于模拟传感器输出、实现定位建图算法,并进行系统性能评估。其仿真环境能显著降低实验成本,加速算法开发与验证周期。 本次“SLAM-基于Matlab的同步定位与建图仿真实践项目”通过Matlab平台完整再现了SLAM的关键流程,包括数据采集、滤波估计、特征提取、数据关联与地图更新等核心模块。该项目不仅呈现了SLAM技术的实际应用场景,更为机器人导航与自主移动领域的研究人员提供了系统的实践参考。 项目涉及的核心技术要点主要包括:传感器模型(如激光雷达与视觉传感器)的建立与应用、特征匹配与数据关联方法、滤波器设计(如扩展卡尔曼滤波与粒子滤波)、图优化框架(如GTSAM与Ceres Solver)以及路径规划与避障策略。通过项目实践,参与者可深入掌握SLAM算法的实现原理,并提升相关算法的设计与调试能力。 该项目同时注重理论向工程实践的转化,为机器人技术领域的学习者提供了宝贵的实操经验。Matlab仿真环境将复杂的技术问题可视化与可操作化,显著降低了学习门槛,提升了学习效率与质量。 实践过程中,学习者将直面SLAM技术在实际应用中遇到的典型问题,包括传感器误差补偿、动态环境下的建图定位挑战以及计算资源优化等。这些问题的解决对推动SLAM技术的产业化应用具有重要价值。 SLAM技术在工业自动化、服务机器人、自动驾驶及无人机等领域的应用前景广阔。掌握该项技术不仅有助于提升个人专业能力,也为相关行业的技术发展提供了重要支撑。随着技术进步与应用场景的持续拓展,SLAM技术的重要性将日益凸显。 本实践项目作为综合性学习资源,为机器人技术领域的专业人员提供了深入研习SLAM技术的实践平台。通过Matlab这一高效工具,参与者能够直观理解SLAM的实现过程,掌握关键算法,并将理论知识系统应用于实际工程问题的解决之中。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值