📌 目录:

  1. 基础字符匹配
  2. 元字符(Metacharacters)
  3. 字符类(Character Classes)
  4. 量词(Quantifiers)
  5. 边界匹配(Anchors)
  6. 分组与捕获(Groups & Capturing)
  7. 回溯引用(Backreferences)
  8. 断言(Assertions)
  9. 贪婪与懒惰匹配(Greedy vs. Lazy)
  10. 模式修饰符(Modifiers/Flags)
  11. 常见正则表达式示例
  12. 参考资料

1. 基础字符匹配

正则表达式默认逐字符匹配:

  • hello 仅匹配 "hello",但不匹配 "Hello"(大小写敏感)。
  • abc123 只能匹配完全相同的字符串。

2. 元字符(Metacharacters)

正则中的特殊字符需转义 \,否则具有特殊含义:

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

  • . 匹配除换行符外的任意字符
  • ^ 匹配字符串的开始位置
  • $ 匹配字符串的结束位置

示例:

a.c

匹配 "abc""a_c",但不匹配 "ac"


3. 字符类(Character Classes)

  • [abc] 匹配 abc
  • [0-9] 匹配数字(等价于 \d
  • \w 匹配字母、数字和下划线(等价于 [a-zA-Z0-9_]

示例:

[A-Z][a-z]+

匹配 "Hello",但不匹配 "hello"


4. 量词(Quantifiers)

  • * 匹配 0 次或多次
  • + 匹配 1 次或多次
  • ? 匹配 0 次或 1 次
  • {n,m} 匹配 nm

示例:

a{2,4}

匹配 "aa""aaa""aaaa"


5. 边界匹配(Anchors)

  • ^ 匹配行首
  • $ 匹配行尾
  • \b 匹配单词边界

示例:

\bhello\b

匹配 "hello",但不匹配 "hello123"


6. 分组与捕获(Groups & Capturing)

  • () 用于分组和捕获
  • (?:...) 非捕获组

示例:

(\d{3})-(\d{4})

匹配 "123-4567",并捕获 "123""4567"


7. 回溯引用(Backreferences)

  • \1, \2, \3 ... 引用前面捕获的组

示例:

(\w+)\s\1

匹配 "hello hello",但不匹配 "hello world"


8. 断言(Assertions)

  • (?=...) 正向先行断言
  • (?!...) 负向先行断言
  • (?<=...) 正向后行断言
  • (?<!...) 负向后行断言

示例:

\d+(?= USD)

匹配 "100 USD" 中的 100


9. 贪婪与懒惰匹配(Greedy vs. Lazy)

  • 贪婪匹配 .*
  • 懒惰匹配 .*?

示例:

<a>.*?</a>

匹配 <a>hello</a><a>world</a>,而不是整个字符串。


10. 模式修饰符(Modifiers/Flags)

  • i 忽略大小写
  • g 全局匹配
  • m 多行模式
  • s. 匹配换行符

示例:

/hello/i

匹配 "Hello""hello"


11. 常见正则表达式示例

匹配 Email 地址

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

匹配 IPv4 地址

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

匹配 URL

https?://[^\s/$.?#].[^\s]*

匹配电话号码

\d{3}-\d{3}-\d{4}


12. 参考资料

🔗 出站链接

🔗 站内链接


这样整理后,你觉得是否满足你的要求?😊