9.6使用正则表达式

9.6使用正则表达式

        正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,“\\d”表示数字0~9中的任何一个,“\d”就是元字符。正则表达式中的元字符及其意义如表1所示。

表1正则表达式中的元字符
元字符正则表达式中的写法意义
..任意一个字符
\d\\d0~9的任何一个数字
\D\\D任何一个非数字字符
\s\\s空白字符,如'\t'、'\n'
\S\\S非空白字符
\w\\w可用于标识符的字符,但不包括“$”
\W\\W不可用于标识符的字符
\p{Lower}\\p{Lower}小写字母a~z
\p{Upper}\\p{Upper}大写字母A~Z
\p{ASCII}\\p{ASCII}ASCII字符
\p{Alpha}\\p{Alpha}字母字符
\p{Digit}\\p{Digit}十进制数字,即0~9
\p{Alnum}\\p{Alnum}数字或字母字符
\p{Punct}\\p{Punct}标点符号:!"#$%&'(*+,-.1:;<=>?@[\]^_`{|}~
\p{Graph}\\p{Graph}可见字符:[\p{Alnum}\p{Punct}]
\p{Print}\\p{Print}可打印字符:[\p{Graph}\x20]
\p{Blank}\\p{Blank}空格或制表符:[\t]
\p{Cntrl}\\p{Cntrl}控制字符:[\x00-\x1F\x7F]
说明:
        在正则表达式中,“.”代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符".",必须使用转义字符“\”。

        在正则表达式中,可以使用方括号括起若干个字符来表示一个元字符,该元字符可代表方括号中的任何一个字符。例如,reg = "[abc]4",这样字符串a4、b4、c4都是和正则表达式匹配的字符串。方括号元字符还可以为其他格式。如:
        ☑ [^456]:代表4、5、6之外的任何字符。
        ☑ [a-r]:代表a~r中的任何一个字母。
        ☑ [a-zA-Z]:可表示任意一个英文字母。
        ☑ [a-e[g-z]]:代表a~e或g~z中的任何一个字母(并运算)。
        ☑ [a-0&&[def]]:代表字母d、e、f(交运算)。
        ☑[a-d&&[^bc]]:代表字母a、d(差运算)。
        在正则表达式中允许使用限定修饰符来限定元字符出现的次数。例如,“A*”代表A可在字符串中出现0次或多次。限定修饰符的用法如表2所示。

表2限定修饰符
限定修饰符意义示例
?0次或1次A?
*0次或多次A*
+一次或多次A+
{n}正好出现n次A{2}
{n,}至少出现n次A{3,}
{n,m}出现n~m次A{2,6}

        【例1】验证E-mail地址是否“合法”
        在项目中创建Judge类,使用正则表达式来判断“aaa@”“aaaaa”“[email protected]”这3个E-mail地址哪一个是合法的。实例代码如下:

public class Judge { public static void main(String[] args){ //定义要匹配E-mail地址的正则表达式 String regex = "\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}"; String str1 = "aaa@"; //定义要进行验证的字符串 String str2 = "aaaaa"; String str3 = "[email protected]"; if(str1.matches(regex)){ //判断字符串变量是否与正则表达式匹配 System.out.println(str1+"是一个合法的E-mail地址格式"); } if(str2.matches(regex)){ System.out.println(str2+"是一个合法的E-mail地址格式"); } if(str3.matches(regex)){ System.out.println(str3+"是一个合法的E-mail地址格式"); } } }
运行结果如下:

[email protected]是一个合法的E-mail地址格式

        正则表达式分析:
        通常情况下E-mail的格式为“[email protected]”。字符X表示任意的一个或多个字符,@为E-mail地址中的特有符号,符号@后还有一个或多个字符,之后是字符“.com”,也可能后面还有类似“.cn”的标记。总结E-mail地址的这些特点,可以书写正则表达式“\\w+@\\w+(\\.\\w{2,3})*\\.\\w{2,3}”来匹配E-mail地址。字符集“\\w”匹配任意字符,符号“+”表示字符可以出现1次或多次,表达式“(\\.\\w{2,3})*”表示形如“.com”格式的字符串可以出现0次或多次。而最后的表达式“\\.\\w{2,3}”用于匹配E-mail地址中的结尾字符,如“.cn”。

Read more

3步搞定海尔智能家居集成:HomeAssistant海尔设备连接终极方案

3步搞定海尔智能家居集成:HomeAssistant海尔设备连接终极方案 【免费下载链接】haier 项目地址: https://gitcode.com/gh_mirrors/ha/haier 想要将家中的海尔智能设备完美接入HomeAssistant系统?海尔智能家居集成正是您需要的解决方案!这个强大的集成插件能够将您的海尔智家设备无缝连接到智能家居平台,实现真正的全屋智能控制。 🎯 为什么您的智能家居需要海尔集成 设备兼容性全面覆盖 从空调到热水器,从窗帘到各类开关,海尔智能家居集成理论上支持所有海尔智家设备。无论您使用的是海尔U+平台的哪款智能产品,都能通过这个集成轻松接入HomeAssistant。 配置简单易上手 通过直观的配置向导,即使是智能家居新手也能在几分钟内完成设备连接。无需编写复杂代码,只需几个简单步骤就能享受智能控制带来的便利。 🚀 快速部署海尔集成到HomeAssistant 方法一:HACS一键安装(推荐) 如果您已经安装了HACS,这是最便捷的安装方式。系统会自动处理所有依赖关系和后续更新,确保您始终使用最新版本。 方法二:手动

如何快速实现无人机RemoteID合规?ArduRemoteID开源方案完整指南

如何快速实现无人机RemoteID合规?ArduRemoteID开源方案完整指南 【免费下载链接】ArduRemoteIDRemoteID support using OpenDroneID 项目地址: https://gitcode.com/gh_mirrors/ar/ArduRemoteID ArduRemoteID是一个专为无人机设计的开源RemoteID解决方案,基于OpenDroneID标准实现,完美支持FAA与欧盟法规要求。通过MAVLink和DroneCAN协议与飞行控制器通信,提供WiFi广播、蓝牙5等多种传输模式,兼容ESP32-S3/C3等主流硬件平台,帮助开发者轻松实现无人机身份识别功能。 🚁 项目核心功能解析 多协议兼容的身份发射系统 ArduRemoteID模块集成了MAVLink与DroneCAN双协议支持,可无缝对接ArduPilot等主流飞控系统。通过RemoteIDModule/transmitter.cpp实现的发射逻辑,能同时广播无人机位置、速度、高度等关键飞行数据,确保监管平台实时获取设备状态。 全平台硬件适配方案 支持ESP3

2025年睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)解题报告 | 珂学家

2025年睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)解题报告 | 珂学家

前言 题解 2025年睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛)解题报告 睿抗一如既往的码量大,喜欢阅读理解挖坑,T_T。 T3 应该是最简单,如果去掉匹配串 2 字节的限制,感觉会是一道有趣的题。 RC-u1 谁拿冠军了? 分值: 15分 考察点:hash表的使用 注意点:明明某一天里,可能存在多个相同操作,需要求其总和,在除 2。 #include<bits/stdc++.h>usingnamespace std;intmain(){int n, m; cin >> n >> m;int A1, A2, B1,

吃透 AM32 无人机电调:从源码架构到工作原理的全方位解析(附实践指南)(上)

开篇:为什么要深度剖析 AM32 电调? 作为多旋翼无人机的 “动力心脏”,电调(电子调速器)的性能直接决定了无人机的飞行稳定性、响应速度和续航能力。而 AM32 系列电调凭借开源性、高性价比、适配性强三大优势,成为了开源无人机社区的热门选择 —— 从入门级的 2204 电机到专业级的 2306 电机,从 3S 锂电池到 6S 高压电池,AM32 都能稳定驱动。 但很多开发者和爱好者在接触 AM32 源码时,常会陷入 “看得懂代码,看不懂逻辑” 的困境:为什么 FOC 算法要做坐标变换?DShot 协议的脉冲怎么解析?保护机制是如何实时触发的? 这篇博客将从硬件基础→源码架构→模块解析→工作原理→实践操作五个维度,逐行拆解 AM32 电调固件源码,帮你彻底搞懂