正则表达式
正则表达式是一种强大的文本匹配和处理工具,它可以用于在文本中查找、匹配和替换模式。在学习正则表达式时,需要了解它的基础概念、语法、常用的模式和一些常见的使用示例。
1. 基础概念
1.1 正则表达式是什么?
正则表达式(Regular Expression),通常简写为"regex",是一种文本模式,用于匹配和搜索文本字符串。
1.2 字面量和元字符
正则表达式由字面量字符和元字符组成。字面量字符是普通字符,而元字符具有特殊含义。
1.3 字符类
字符类用方括号 [ ]
表示,用于匹配一个字符集中的任何字符。例如,[aeiou]
匹配任何一个元音字母。
2. 正则表达式语法
2.1 元字符
常用的元字符包括:
.
匹配任何字符(除了换行符)。*
匹配前一个元素零次或多次。+
匹配前一个元素一次或多次。?
匹配前一个元素零次或一次。|
表示或的关系,例如A|B
匹配 A 或 B。
2.2 字符类
字符类用于匹配一个字符集中的任何字符,例如:
[aeiou]
匹配任何一个元音字母。[0-9]
匹配任何一个数字。[^0-9]
匹配任何一个非数字字符。
2.3 位置元字符
位置元字符用于匹配文本的位置,包括:
^
匹配文本的开头。$
匹配文本的结尾。\b
匹配单词边界。
2.4 量词
量词用于指定模式的重复次数,包括:
{n}
匹配前一个元素恰好 n 次。{n,}
匹配前一个元素至少 n 次。{n,m}
匹配前一个元素至少 n 次但不超过 m 次。
3. 正则表达式的使用示例
3.1 匹配 Email 地址
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
3.2 匹配 URL
^(https?|ftp)://[^\s/$.?#].[^\s]*$
3.3 提取日期
(\d{4}-\d{2}-\d{2})
3.4 替换文本
s/old/new/g
4. 需要注意的点
4.1 贪婪和非贪婪匹配
默认情况下,正则表达式是贪婪的,会匹配尽可能多的文本。你可以在量词后加上 ?
来使其变成非贪婪匹配。
4.2 转义字符
一些字符具有特殊含义,如果要匹配它们本身,需要使用反斜杠 \
进行转义,例如 \\
, \(
, \)
。
4.3 正则表达式工具
使用正则表达式工具来测试和调试你的模式。常见的工具包括在线正则表达式测试器和编程语言内置的正则表达式支持。
5. 高级主题
5.1 分组和捕获
你可以使用括号 ( )
来创建分组,并捕获匹配的内容。例如,(\d{2})-(\d{2})
会捕获两个数字组成的日期。
5.2 反向引用
你可以在正则表达式内使用反向引用来引用之前捕获的文本。例如,\b (\w+)\s+\1\b
用于匹配重复的单词。
5.3 零宽断言
零宽断言是一种用于匹配位置而不是实际字符的元字符,包括正向前视断言 (?=…)
, 负向前视断言 (?!…)
, 正向后顾断言 (?<=…)
, 负向后顾断言 (?<!…)
。
正则表达式
https://www.lihaibao.cn/2023/11/23/正则表达式/