正则表达式基础

文章目录

  • 发现宝藏
  • 前言
  • [1. 正则表达式的定义](#1. 正则表达式的定义)
  • [2. 常见的正则表达式字符](#2. 常见的正则表达式字符)
  • [3. 经典示例](#3. 经典示例)
    • [3.1 匹配电子邮件地址](#3.1 匹配电子邮件地址)
    • [3.2 匹配URL](#3.2 匹配URL)
    • [3.3 匹配日期](#3.3 匹配日期)
    • [3.4 匹配IP地址](#3.4 匹配IP地址)
    • [3.5 匹配HTML标签](#3.5 匹配HTML标签)
    • [3.6 匹配电话号码](#3.6 匹配电话号码)
    • [3.7 匹配用户名](#3.7 匹配用户名)

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

前言

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。

(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

1. 正则表达式的定义

正则表达式(Regular Expression,简称Regex或RegExp)是一种用于描述字符串匹配规则的表达式。它是由普通字符(例如字母、数字)和特殊字符(称为元字符)组成的文本模式。正则表达式在文本处理、搜索和替换等操作中被广泛使用,提供了一种灵活、强大的方式来描述和匹配字符串的模式。

正则表达式的应用涵盖了多个领域,包括文本搜索、替换、数据验证、语法分析等。在编程中,常常使用正则表达式来进行字符串的模式匹配和处理。各种编程语言,如Java、Python、JavaScript等,都提供了对正则表达式的支持,使开发者能够更方便地利用这一强大的工具。

2. 常见的正则表达式字符

正则表达式的基本元素包括普通字符和元字符。普通字符表示它们自身,而元字符具有特殊含义,用于表示一类字符或字符的数量。

常见的正则表达式元字符包括:

元字符 描述 示例正则表达式 示例匹配字符串
. 匹配任意单个字符(除了换行) 'a.b' "aab", "a1b"
^ 匹配字符串的开头 '^abc' "abcdef", "abc123"
$ 匹配字符串的结尾 'xyz$' "123xyz", "abcxyz"
* 匹配前一个字符零次或多次 ' a*b ' "b", "aaab"
+ 匹配前一个字符一次或多次 ' c+d ' "cd", "cccd"
? 匹配前一个字符零次或一次 'e?f ' "ef", "f"
\[\] 字符类,匹配其中任意一个字符 'aeiou' "a", "e", "o"
\^ 排除字符类,匹配非其中字符 '\^0-9' "abc", "$%"
\ | 选择,匹配两者之一 'cat \ |dog' "cat", "dog"
() 分组,将多个模式组合为一个整体 '(ab)+' "ab", "abab"
\ 转义字符,取消元字符的特殊含义 '\ .' "abc.def", "123.45"
\d 匹配任意数字 '\d{3}' "123", "456"
\D 匹配任意非数字字符 '\D{2}' "ab", "$%"
\w 匹配任意字母、数字或下划线 '\w+' "abc123", "word_word"
\W 匹配任意非字母、数字或下划线 '\W{3}' "$%#", "123!"
\s 匹配任意空白字符(空格、制表符等) ' \s ' " ", "\t"
\S 匹配任意非空白字符 '\S+' "word", "123!"

3. 经典示例

3.1 匹配电子邮件地址

1. 正则表达式示例:

python 复制代码
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b

2. 解析:

  • \b : 匹配单词边界
  • [A-Za-z0-9._%+-]+ : 匹配用户名部分,可以包含字母、数字、点、下划线、百分比、加号和减号
  • @ : 匹配 "@" 符号
  • [A-Za-z0-9.-]+ : 匹配域名部分,可以包含字母、数字、点和减号
  • \. : 匹配域名和顶级域之间的点
  • [A-Za-z]{2,} : 匹配顶级域,至少包含两个字母
  • \b : 匹配单词边界

3.2 匹配URL

1. 正则表达式示例:

python 复制代码
^(https?|ftp):\/\/[^\s\/$.?#].[^\s]*$

2. 解析:

  • ^ : 匹配字符串的开头
  • (https?|ftp) : 匹配 "http"、"https" 或 "ftp"
  • :\ / \ / : 匹配 " : / /" 部分
  • [^\s\/$.?#]* : 匹配域名,不包含空格、斜杠、点、问号和井号
  • (\/[^\s]*)? : 匹配可选的路径部分,以斜杠开头,后面可以包含字母、数字和其他字符,但不能包含空格
  • $ : 匹配字符串的结尾

3.3 匹配日期

1. 正则表达式示例:

python 复制代码
\b\d{4}[-/]\d{1,2}[-/]\d{1,2}\b

2. 解析:

  • \b : 匹配单词边界
  • \d{4} : 匹配四个数字,表示年份
  • [-/] : 匹配日期部分的分隔符,可以是短横线或斜杠
  • \d{1,2} : 匹配一到两个数字,表示月份和日期
  • \b : 匹配单词边界

3.4 匹配IP地址

1. 正则表达式示例:

python 复制代码
\b(?:\d{1,3}\.){3}\d{1,3}\b

2. 解析:

  • \b : 匹配单词边界
  • (?:\d{1,3}\.){3} : 非捕获分组,匹配三次数字和点的组合,用于匹配前三个IP地址部分
  • \d{1,3} : 匹配IP地址的最后一部分,可以是一个到三个数字
  • \b : 匹配单词边界

3.5 匹配HTML标签

1. 正则表达式示例:

python 复制代码
<("[^"]*"|'[^']*'|[^'">])*> 

2. 解析:

  • < : 匹配HTML标签的开始
  • ("[^"]*"|'[^']*'|[^'">])* : 匹配HTML标签内的内容,可以是双引号中的任意字符、单引号中的任意字符,或者除了单引号、双引号和大于号之外的任意字符
  • > : 匹配HTML标签的结束

3.6 匹配电话号码

1. 正则表达式示例:

python 复制代码
\b\d{3}[-.]?\d{3}[-.]?\d{4}\b

2. 解析:

  • \b : 匹配单词边界
  • \d{3}[-.]? : 匹配三个数字,后面可以跟一个可选的短横线或点
  • \d{3}[-.]? : 再次匹配三个数字,后面可以跟一个可选的短横线或点
  • \d{4} : 最后匹配四个数字
  • \b : 匹配单词边界

3.7 匹配用户名

1. 正则表达式示例:

python 复制代码
^[a-zA-Z0-9_-]{3,16}$

2. 解析:

  • ^ : 匹配字符串的开头
  • [a-zA-Z0-9_-]{3,16} : 匹配用户名,可以包含字母、数字、下划线和短横线,长度为3到16个字符
  • $ : 匹配字符串的结尾
相关推荐
小玮看世界10 分钟前
[Python]自动驾驶感知与决策练习题 (1-10)
开发语言·python·自动驾驶
Ming_studying18 分钟前
Python + SQLite FTS5 构建本地文档全文搜索器:增量索引、中文检索与高亮
jvm·数据库·python·sqlite
玉鸯31 分钟前
让 Agent 面向用户:AG-UI 协议构建 Agent 前端
前端·python·agent
fanged38 分钟前
高通学习21--调试(TODO)
学习
小白学大数据44 分钟前
把 Modbus 轮询塞进 Trio 的异步循环:内存映射与定时采集实战
网络·python·搜索引擎
超爱西西鸭1 小时前
鸿蒙大型项目高级模块化拆分:高内聚低耦合架构设计/HSP动态交付/接口契约/依赖倒置落地规范
学习·华为·harmonyos·鸿蒙
FriendshipT1 小时前
Ubuntu 20.04 下使用 Ollama 本地部署 AI 大模型
linux·人工智能·python·深度学习·ubuntu
大模型丫丫1 小时前
Loop Engineering:从强化学习视角看 Agent 循环的本质
java·人工智能·学习
天天爱吃肉82181 小时前
# 商用车多体动力学实战笔记|第7篇:制动系统与制动热衰退、ABS滞环控制
大数据·人工智能·笔记·python·嵌入式硬件·汽车
bamb001 小时前
一个项目带你入门AI应用开发08
python