文章目录
- 发现宝藏
- 前言
- 1. 正则表达式的定义
- 2. 常见的正则表达式字符
- 3. 经典示例
- 3.1 匹配电子邮件地址
- 3.2 匹配URL
- 3.3 匹配日期
- 3.4 匹配IP地址
- 3.5 匹配HTML标签
- 3.6 匹配电话号码
- 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. 正则表达式示例:
\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. 正则表达式示例:
^(https?|ftp):\/\/[^\s\/$.?#].[^\s]*$
2. 解析:
^: 匹配字符串的开头(https?|ftp): 匹配 “http”、“https” 或 “ftp”:\ / \ /: 匹配 " : / /" 部分[^\s\/$.?#]*: 匹配域名,不包含空格、斜杠、点、问号和井号(\/[^\s]*)?: 匹配可选的路径部分,以斜杠开头,后面可以包含字母、数字和其他字符,但不能包含空格$: 匹配字符串的结尾
3.3 匹配日期
1. 正则表达式示例:
\b\d{4}[-/]\d{1,2}[-/]\d{1,2}\b
2. 解析:
\b: 匹配单词边界\d{4}: 匹配四个数字,表示年份[-/]: 匹配日期部分的分隔符,可以是短横线或斜杠\d{1,2}: 匹配一到两个数字,表示月份和日期\b: 匹配单词边界
3.4 匹配IP地址
1. 正则表达式示例:
\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. 正则表达式示例:
<("[^"]*"|'[^']*'|[^'">])*>
2. 解析:
<: 匹配HTML标签的开始("[^"]*"|'[^']*'|[^'">])*: 匹配HTML标签内的内容,可以是双引号中的任意字符、单引号中的任意字符,或者除了单引号、双引号和大于号之外的任意字符>: 匹配HTML标签的结束
3.6 匹配电话号码
1. 正则表达式示例:
\b\d{3}[-.]?\d{3}[-.]?\d{4}\b
2. 解析:
\b: 匹配单词边界\d{3}[-.]?: 匹配三个数字,后面可以跟一个可选的短横线或点\d{3}[-.]?: 再次匹配三个数字,后面可以跟一个可选的短横线或点\d{4}: 最后匹配四个数字\b: 匹配单词边界
3.7 匹配用户名
1. 正则表达式示例:
^[a-zA-Z0-9_-]{3,16}$
2. 解析:
^: 匹配字符串的开头[a-zA-Z0-9_-]{3,16}: 匹配用户名,可以包含字母、数字、下划线和短横线,长度为3到16个字符$: 匹配字符串的结尾