当前位置: 首页 > news >正文

【玩转正则表达式】正则表达式常用语法汇总

1. 基本字符
  • 普通字符:匹配自身。例如,正则表达式hello匹配字符串中的“hello”。
  • \d:匹配任何数字字符,相当于[0-9]。例如,\d\d\d匹配三个连续的数字。
    • 示例123456
  • \w:匹配任何字母数字字符(包括下划线),相当于[A-Za-z0-9_]
    • 示例a1b_Z9x
  • \s:匹配任何空白字符(空格、制表符等),相当于[ \t\n\r\f\v]
    • 示例"Hello, World!\nThis is a test."中的换行符\n
  • .:匹配除换行符\n之外的任何单个字符。
    • 示例a.c可以匹配abca1c
2. 元字符
  • ^:匹配输入字符串的开始位置。
    • 示例^hello匹配以“hello”开头的字符串。
  • $:匹配输入字符串的结束位置。
    • 示例world$匹配以“world”结尾的字符串。
  • *****:匹配前面的子表达式零次或多次。
    • 示例ab*可以匹配aababb等。
  • +:匹配前面的子表达式一次或多次。
    • 示例ab+可以匹配ababbabbb等,但不匹配a
  • ?:匹配前面的子表达式零次或一次。
    • 示例ab?可以匹配aab
  • {n}:匹配前面的子表达式恰好n次。
    • 示例a{3}匹配aaa
  • {n,}:匹配前面的子表达式至少n次。
    • 示例a{2,}匹配aaaaaaaaa等。
  • {n,m}:匹配前面的子表达式至少n次,至多m次。
    • 示例a{2,4}匹配aaaaaaaaa
3. 方括号表达式
  • [abc]:匹配方括号内的任一字符。
    • 示例[abc]可以匹配abc
  • [^abc]:匹配不在方括号内的任一字符。
    • 示例[^abc]可以匹配除abc之外的任何字符。
  • [a-z]:匹配指定范围内的任一字符。
    • 示例[a-z]匹配任何小写字母。
4. 分组和捕获
  • ():用于分组子表达式,并可以捕获匹配的文本。
    • 示例(abc)\1匹配abcabc,其中\1表示引用第一个捕获组。
  • |:表示“或”操作。
    • 示例a|b匹配ab
  • ****:用于转义元字符,使其匹配自身。
    • 示例\.匹配句点.字符本身。
5. 非捕获组和前瞻
  • (?:…):非捕获组,匹配但不捕获文本。
    • 示例(?:abc)匹配abc但不捕获。
  • (?=…):正向前瞻,匹配前面的子表达式,但不包括在结果中。
    • 示例foo(?=bar)匹配foo,如果后面跟着bar
  • (?!..):负向前瞻,匹配前面的子表达式,如果后面不跟着指定的子表达式。
    • 示例foo(?!bar)匹配foo,如果后面不是bar
6. 边界匹配
  • \b:匹配一个单词边界,即字与空格间的位置。
    • 示例\bword\b匹配完整的单词word
  • \B:匹配非单词边界的位置。
7. 常见示例
  • 匹配数字\d+匹配一个或多个连续的数字。
    • 示例12345
  • 匹配字母\w+匹配一个或多个字母数字字符。
    • 示例a1b2c3
  • 匹配邮箱地址^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    • 示例example@email.com
  • 匹配URL^(http|https)://[^\s/$.?#].[^\s]*$
    • 示例http://www.example.com
  • 提取手机号码\b1[3-9]\d{9}\b
    • 示例13812345678
  • 匹配日期格式\d{4}-\d{2}-\d{2}
    • 示例2023-05-15

相关文章:

  • DevOps全流程
  • Redis高频面试题10个
  • 机器视觉运动控制一体机在天地盖同步跟随贴合解决方案
  • 系统架构设计师—数据库基础篇—数据库设计
  • C++编程:进阶阶段—4.1封装
  • Fork/Join 框架详解:分支合并的高性能并发编程
  • NoClassDefFoundError:UnsynchronizedByteArrayOutputStream
  • MySQL复合查询——通过案例讲解每个指令
  • MR的环形缓冲区(底层)
  • MyBatis-Plus开发流程:Spring Boot + MyBatis-Plus 实现对 book_tab 表的增删改查及Redis缓存
  • 在线量化工具总结与实战(mqbench) -- 学习记录
  • Vue 的 render 函数如何与 JSX 结合使用
  • 数据库防火墙 架构设计
  • 怎么做数据冷热分离?怎么做分库分表?为什么要用ES?
  • Seurat - Guided Clustering Tutorial官方文档学习及复现
  • 破解透明物体抓取难题,地瓜机器人CASIA 推出几何和语义融合的单目抓取方案|ICRA 2025
  • 图表解析技术:逆向提取图表数据,需要哪几步?
  • 基于Hadoop平台的电信客服数据的处理与分析
  • Ubuntu 合上屏幕 不待机 设置
  • 【Winform】WinForms中进行复杂UI开发时的优化
  • 词条数量大幅扩充,《辞海》第八版启动编纂
  • 商务部召开全国离境退税工作推进会:提高退税商店覆盖面,扩大入境消费
  • 乌克兰谈判代表团由12人组成,乌防长率领
  • 秦洪看盘|缩量回踩,积蓄叩关能量
  • 南方降水频繁暴雨连连,北方高温再起或现40°C酷热天气
  • 陕西旱情实探:大型灌区农业供水有保障,大旱之年无旱象