🧩
← 返回教程列表

正则表达式入门:如何编写正则表达式

· 标签: regex-beginners, regular-expression-guide, regex-tutorial, regex-patterns, learn-regex

正则表达式入门

正则表达式——regex——是描述文本的模式。借助正则表达式,你可以搜索字符串、校验输入、提取数据,并用一条紧凑的表达式完成复杂的查找与替换。一旦掌握了基础知识,正则表达式将成为你编程工具箱中最强大的工具之一。

什么是正则表达式?

正则表达式是定义搜索模式的一串字符。模式 \d{3}-\d{2}-\d{4} 可匹配美国社会安全号码:三位数字、连字符、两位数字、连字符、四位数字。

几乎所有编程语言都内置了正则表达式引擎——JavaScript、Python、Java、Ruby、Go 等。

字面字符

大多数字符都会匹配其本身。模式 cat 无论出现在哪里,都匹配字符串 "cat"。

Pattern: cat
Matches: "cat" in "The cat sat on the mat."
Matches: "cat" in "catalog"

字面匹配虽然简单,但能力有限。真正的威力来自元字符。

元字符

以下字符具有特殊含义,若要按字面意义匹配,必须使用 \ 进行转义:

. ^ $ * + ? { } [ ] \ | ( )

字符类

字符类用于匹配一个集合中的单个字符。

方括号记法

| 模式 | 匹配 | |---------|---------| | [aeiou] | 任意元音 | | [0-9] | 任意数字 | | [a-zA-Z] | 任意字母 | | [^0-9] | 任意非数字字符 |

预定义字符类

| 简写 | 说明 | |-----------|-------------| | \d | 任意数字(等同于 [0-9]) | | \w | 字母、数字或下划线 | | \s | 空格、制表符、换行符 | | \D | 任意非数字 | | \W | 任意非单词字符 | | \S | 任意非空白字符 | | . | 除换行符以外的任意字符 |

量词

量词控制前面的元素必须出现的次数。

| 量词 | 含义 | 示例 | 匹配 | |------------|---------|---------|---------| | * | 零次或多次 | a* | "", "a", "aa" | | + | 一次或多次 | a+ | "a", "aa", "aaa" | | ? | 零次或一次 | colou?r | "color", "colour" | | {3} | 恰好 N 次 | \d{3} | "123" | | {2,4} | 在 N 到 M 次之间 | \d{2,4} | "12", "123", "1234" |

示例

\d+     → "42" in "Answer is 42"
https?://  → "http://" and "https://"

锚点

锚点匹配的是位置,而非字符。

| 锚点 | 含义 | |--------|---------| | ^ | 字符串开头 | | $ | 字符串结尾 | | \b | 单词边界 | | \B | 非单词边界 |

^hello   → matches "hello" only at the start
end$     → matches "end" only at the end
\bword\b → matches "word" as a whole word, not inside "sword"

分组与选择

捕获组 ( ) 用于提取匹配的部分:

(\d{3})-(\d{4}) → "555-1234", captures "555" in group 1, "1234" in group 2

非捕获组 (?: ) 用于分组但不提取内容:

(?:https?|ftp):// → "http://", "https://", "ftp://"

选择 | 相当于 OR(或):

cat|dog|bird → matches "cat", "dog", or "bird"

实用正则表达式示例

| 用途 | 模式 | |----------|---------| | 美国电话号码 | \d{3}-\d{3}-\d{4} | | 电子邮件(简单) | \S+@\S+\.\S+ | | IP 地址 | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} | | 话题标签 | #[a-zA-Z]\w* | | 时间(HH:MM) | [01]\d|2[0-3]:[0-5]\d |

如何测试正则表达式模式

务必交互式地测试模式:

  1. 输入你的正则表达式模式。
  2. 输入测试字符串。
  3. 实时查看哪些部分匹配。
  4. 调整后重复测试。

使用正则表达式测试工具来试验各种模式。它会高亮匹配结果、显示捕获组,并帮助你准确理解表达式每一部分的作用。

正则表达式入门:如何编写正则表达式 - CoolTool