正则表达式基础知识

正则表达式(Regular Expression, 简称 RegEx)是一种用于匹配和处理文本的强大工具。它通过使用特殊字符和符号定义的模式,可以灵活地搜索、提取、替换和验证文本内容。以下是正则表达式的基础知识:

1. 普通字符

普通字符代表它们自身的含义,用于匹配文本中相同的字符。例如:

  • "hello" 匹配字符串中的 “hello”。

2. 元字符(Metacharacters)

元字符是正则表达式中的特殊字符,用于构建复杂的匹配模式。

元字符含义
.匹配任意单个字符(换行符除外)
^匹配字符串的开头
$匹配字符串的结尾
*匹配前面的字符 0 次或多次
+匹配前面的字符 1 次或多次
?匹配前面的字符 0 次或 1 次
[]匹配括号内的任意字符(字符类)
|逻辑“或”,匹配 | 左右任意一个表达式
()用于分组,提取匹配的子字符串

3. 字符类(Character Classes)

字符类用于匹配一组字符中的任意一个。字符类是放在方括号 [] 之内的内容。

  • [abc]:匹配 abc 中的任意一个。
  • [a-z]:匹配小写字母 az 中的任意一个。
  • [0-9]:匹配数字 09 中的任意一个。
  • [^abc]:匹配除了 abc 以外的任意字符(以 ^ 开头表示非字符类)。

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}匹配前面的字符出现 nm

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}:匹配两位数字。

通过这些基础规则,可以匹配并处理不同的文本模式。


评论

发表回复