正则表达式(Regular Expression, 简称 RegEx)是一种用于匹配和处理文本的强大工具。它通过使用特殊字符和符号定义的模式,可以灵活地搜索、提取、替换和验证文本内容。以下是正则表达式的基础知识:
1. 普通字符
普通字符代表它们自身的含义,用于匹配文本中相同的字符。例如:
"hello"
匹配字符串中的 “hello”。
2. 元字符(Metacharacters)
元字符是正则表达式中的特殊字符,用于构建复杂的匹配模式。
元字符 | 含义 |
---|---|
. | 匹配任意单个字符(换行符除外) |
^ | 匹配字符串的开头 |
$ | 匹配字符串的结尾 |
* | 匹配前面的字符 0 次或多次 |
+ | 匹配前面的字符 1 次或多次 |
? | 匹配前面的字符 0 次或 1 次 |
[] | 匹配括号内的任意字符(字符类) |
| | 逻辑“或”,匹配 | 左右任意一个表达式 |
() | 用于分组,提取匹配的子字符串 |
3. 字符类(Character Classes)
字符类用于匹配一组字符中的任意一个。字符类是放在方括号 []
之内的内容。
[abc]
:匹配a
、b
或c
中的任意一个。[a-z]
:匹配小写字母a
到z
中的任意一个。[0-9]
:匹配数字0
到9
中的任意一个。[^abc]
:匹配除了a
、b
、c
以外的任意字符(以^
开头表示非字符类)。
4. 预定义字符类
预定义字符类是一些简化常用字符集的快捷方式:
符号 | 含义 |
---|---|
\d | 匹配任意一个数字(0-9) |
\D | 匹配任意非数字字符 |
\w | 匹配字母、数字、下划线(等价于 [a-zA-Z0-9_] ) |
\W | 匹配任意非字母、数字、下划线的字符 |
\s | 匹配任意空白字符(空格、制表符等) |
\S | 匹配任意非空白字符 |
5. 量词(Quantifiers)
量词用于指定前面的字符或子表达式应该出现的次数。
量词 | 含义 |
---|---|
* | 匹配 0 次或多次 |
+ | 匹配 1 次或多次 |
? | 匹配 0 次或 1 次 |
{n} | 匹配前面的字符正好出现 n 次 |
{n,} | 匹配前面的字符至少出现 n 次 |
{n,m} | 匹配前面的字符出现 n 到 m 次 |
6. 锚点(Anchors)
锚点用于锁定匹配的开始或结束位置。
^
:匹配字符串的开头。$
:匹配字符串的结尾。\b
:匹配单词边界。\B
:匹配非单词边界。
7. 分组和捕获
使用圆括号 ()
可以对表达式进行分组,方便提取和重复使用。
(abc)
:匹配完整的子字符串abc
。- 捕获组允许你在匹配之后提取或引用该组内容。
8. 示例
- 匹配一个数字:
\d
匹配任意单个数字。 - 匹配一个电话号码格式(如 123-456-7890):
\d{3}-\d{3}-\d{4}
。 - 匹配邮箱地址:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
。
9. 转义字符
元字符在需要作为普通字符使用时,可以通过加反斜杠 \
来转义。例如:
\.
:匹配实际的小数点,而不是任意字符。
10. 实际例子
假设你想提取一个文本中的数字并保留两位小数,可以使用正则表达式:\d+\.\d{2}
。这个表达式表示:
\d+
:匹配一位或多位数字。\.
:匹配小数点。\d{2}
:匹配两位数字。
通过这些基础规则,可以匹配并处理不同的文本模式。
发表回复
要发表评论,您必须先登录。