正则表达式 – 教程

正则表达式(Regular Expression)教程

正则表达式(简称 Regex 或 RegExp)是一种强大的文本匹配工具,用于描述字符串的模式。它可以用来搜索、替换、验证和提取文本,在编程语言(如 JavaScript、Python、Java 等)和工具(如 grep、sed)中广泛应用。

1. 基本概念

  • 普通字符:直接匹配自身,例如 abc 匹配字符串中的 “abc”。
  • 元字符:具有特殊含义的字符,需要转义来匹配字面值(如 \. 匹配点号)。
  • 正则表达式通常用 /pattern/ 或构造函数创建(如 new RegExp('pattern'))。

2. 常用元字符和语法

以下是常见元字符表格:

元字符描述示例匹配示例
.匹配任意单个字符(除换行符)a.b“aab”、”a1b”
^匹配字符串开头^abc“abcde” 中的 “abc”
$匹配字符串结尾abc$“xyzabc” 中的 “abc”
*匹配前一个字符 0 次或多次ab*“a”、”ab”、”abbb”
+匹配前一个字符 1 次或多次ab+“ab”、”abb”(不匹配 “a”)
?匹配前一个字符 0 次或 1 次ab?“a”、”ab”
{n}匹配前一个字符正好 n 次a{3}“aaa”
{n,}匹配前一个字符至少 n 次a{2,}“aa”、”aaa” 等
{n,m}匹配前一个字符 n 到 m 次a{2,4}“aa”、”aaa”、”aaaa”
[]字符集合,匹配括号内任意一个[abc]“a”、”b” 或 “c”
[^]否定集合,匹配不在括号内的[^abc]除 “a/b/c” 外的字符
|或(分支)a|b“a” 或 “b”
()分组(捕获)(ab)+“ab”、”abab” 等
\d匹配数字 [0-9]\d+“123”
\D匹配非数字\D+“abc”
\w匹配字母、数字、下划线 [A-Za-z0-9_]\w+“hello_123”
\W匹配非 \w
\s匹配空白字符(空格、Tab、换行)\s+” ” 或 “\t”
\S匹配非空白
\b单词边界\bword\b完整单词 “word”
\B非单词边界
  • 转义:用 \ 转义元字符,例如 \. 匹配 “.”,\\ 匹配 “\”。
  • 修饰符(Flags)
  • i:忽略大小写。
  • g:全局匹配。
  • m:多行模式(^ 和 $ 匹配每行开头/结尾)。
  • 示例:/abc/i 匹配 “ABC”。

3. 高级用法

  • 贪婪与懒惰:默认贪婪(匹配尽可能多),加 ? 变为懒惰(匹配尽可能少)。
  • 贪婪:a.*b 匹配 “a123b456b” 中的 “a123b456b”。
  • 懒惰:a.*?b 匹配 “a123b”。
  • 零宽断言(看断言,不消耗字符):
  • (?=pattern):正向前瞻,例如 a(?=\d) 匹配后面跟数字的 “a”。
  • (?!pattern):负向前瞻。
  • (?<=pattern):正向后瞻。
  • (?<!pattern):负向后瞻。
  • 分组与引用
  • (pattern):捕获组,可用 \1\2 引用。
  • (?:pattern):非捕获组。

4. 常见示例

  • 匹配邮箱:^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$
  • 匹配手机号(中国):^1[3-9]\d{9}$
  • 匹配 URL:^https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
  • 替换:将字符串中的数字加1(需编程实现)。

5. 实践建议

  • 使用在线工具测试:如 regex101.com、regexper.com。
  • 不同语言/引擎略有差异(如 PCRE、JavaScript、Python),注意兼容性。
  • 推荐资源:
  • 《正则表达式30分钟入门教程》(deerchao.cn/tutorials/regex/regex.htm)——经典入门,深入浅出。
  • 菜鸟教程:https://www.runoob.com/regexp/regexp-tutorial.html ——有在线测试。
  • MDN JavaScript 正则:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_expressions

多练习是掌握正则的关键!如果有具体问题或示例需求,随时问我。

文章已创建 3511

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部