正则表达式
# 正则表达式学习指南
在编程的世界里,正则表达式(Regular Expressions,简称regex)是一门不可或缺的艺术,它赋予了开发者强大的文本处理能力,让看似复杂的字符串匹配和替换任务变得简单而高效。本文旨在为初学者揭开正则表达式的神秘面纱,引导你掌握这一强大工具,成为文本处理领域的高手。
# 一、正则表达式简介
正则表达式是一种模式匹配语言,用于在文本中搜索、替换或提取符合特定规则的字符串。无论是验证输入数据、清洗数据、还是从大量文本中提取信息,正则表达式都是你的得力助手。
# 二、基础语法入门
# 1. 字符匹配
.
(点号):匹配任意单个字符(除换行符外)。[abc]
:匹配括号内的任何一个字符,如'a'、'b'或'c'。[^abc]
:匹配除括号内字符之外的任何字符。\d
:匹配数字(0-9)。\D
:匹配非数字字符。\w
:匹配字母、数字或下划线。与"[A-Za-z0-9_]"
等效。\W
:匹配非字母、数字或下划线的字符。与 "[^A-Za-z0-9_]
" 等效。\s
:匹配任何空白字符,如空格、制表符、换页符等。\S
:匹配非空白字符。
# 2. 量词
*
:匹配前面元素的零次或多次出现。+
:匹配前面元素的一次或多次出现。?
:匹配前面元素的零次或一次出现。{n}
:匹配前面元素恰好 n 次出现。{n,}
:匹配前面元素至少 n 次出现。{n,m}
:匹配前面元素至少n次,但不超过m次出现。
# 3. 特殊字符与分组
\
:用于转义特殊字符,使其作为普通字符处理。(expr)
:将expr视为一个单元进行匹配,并可用于捕获匹配的内容。|
:表示选择,匹配左边或右边的表达式。^
:匹配字符串的开始。$
:匹配字符串的结束。
# 三、实战演练
# 1. 邮箱验证
假设我们要验证一个字符串是否符合邮箱的基本格式,可以使用如下正则表达式:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
1
^
表示字符串开始。[a-zA-Z0-9._%+-]+
匹配用户名部分,可以包含字母、数字、点号、下划线、百分号、加号、减号。@
必须出现的符号。[a-zA-Z0-9.-]+
匹配域名部分。\.
必须出现的点号,用来分隔域名和顶级域名。[a-zA-Z]{2,}
匹配至少两个字母的顶级域名。$
表示字符串结束。
# 2. 提取URL中的域名
如果我们想从一段文本中提取所有的网址域名,可以使用以下正则:
\b(?:https?|ftp)://[^\s/$.?#].[^\s]*
1
\b
单词边界,确保URL是独立的。(?:https?|ftp)
匹配http、https或ftp协议。://
URL中协议后的分隔符。[^\s/$.?#]
匹配除了空白、斜杠、问号、点号、井号之外的字符,即域名开始。[^\s]*
匹配域名剩余部分,直到遇到空白字符。
# 四、在线测试工具
学习正则表达式的过程中,推荐使用在线测试工具如 RegExr、Regex101 等,它们不仅提供了实时的匹配预览,还内置了详细的教程和模式解释,极大提升了学习效率。
工具地址:
正则表达式可视化工具 | 菜鸟工具 (jyshare.com) (opens new window)
正则表达式在线测试 | 菜鸟工具 (jyshare.com) (opens new window)
RegExr: Learn, Build, & Test RegEx (opens new window)
regex101: build, test, and debug regex (opens new window)
# 学习参考
上次更新: 2024/9/25 11:16:13