正则表达式符号匹配规则详解大全

正则表达式符号匹配规则详解大全

正则表达式是用于匹配字符串中字符组合的模式

正则表达式是正则表达式引擎尝试匹配输入文本的一种模式。 模式由一个或多个字符文本、运算符或构造组成。


正则表达式核心规则详解

一、元字符(Metacharacters)​

元字符 描述 示例 匹配结果
\ 转义字符,用于匹配特殊字符本身 \. 匹配 .<br>\\ 匹配 \ \. → .<br>\\ → \
^ 匹配字符串开头(多行模式下匹配行首) ^abc 匹配以 abc 开头的字符串 "abc123" → 匹配<br>"123abc" → 不匹配
$ 匹配字符串结尾(多行模式下匹配行尾) abc$ 匹配以 abc 结尾的字符串 "123abc" → 匹配<br>"abc123" → 不匹配
. 匹配任意单个字符(除 \n 和 \r a.c 匹配 abca1c 等 "a1c" → 匹配<br>"a\nc" → 不匹配
(pattern) 捕获分组,记录匹配内容 (ab)+ 匹配 ababab 并捕获 ab "abab" → 捕获 ab 两次
(?:pattern) 非捕获分组,仅分组不捕获 (?:ab)+ 匹配 abab 但不捕获 "abab" → 无捕获
(?=pattern) 正向肯定预查(后面必须匹配) Windows(?=95) 匹配 Windows 但要求后面是 95 "Windows95" → 匹配 Windows<br>"Windows3.1" → 不匹配
(?!pattern) 正向否定预查(后面不能匹配) Windows(?!95) 匹配 Windows 但后面不能是 95 "Windows3.1" → 匹配 Windows<br>"Windows95" → 不匹配
(?<=pattern) 反向肯定预查(前面必须匹配) (?<=95)Windows 匹配 Windows 但前面必须是 95 "95Windows" → 匹配 Windows<br>"3.1Windows" → 不匹配
(?<!pattern) 反向否定预查(前面不能匹配) (?<!95)Windows 匹配 Windows 但前面不能是 95 "3.1Windows" → 匹配 Windows<br>"95Windows" → 不匹配
x|y 匹配 x 或 y z|food 匹配 z 或 food "z" → 匹配<br>"food" → 匹配

二、字符集合(Character Classes)​

符号 描述 示例 匹配结果
[xyz] 匹配任意一个指定字符 [abc] 匹配 ab 或 c "plain" → 匹配 a
[^xyz] 匹配任意一个不在集合中的字符 [^abc] 匹配非 abc 的字符 "plain" → 匹配 plin
[a-z] 匹配指定范围内的字符 [a-z] 匹配任意小写字母 "hello" → 匹配所有字母
[^a-z] 匹配不在指定范围内的字符 [^a-z] 匹配非小写字母的字符 "Hello123" → 匹配 H123
\d 匹配数字(等价于 [0-9] \d\d 匹配两位数字 "12" → 匹配
\D 匹配非数字(等价于 [^0-9] \D\D 匹配两个非数字字符 "ab" → 匹配
\w 匹配单词字符(字母、数字、下划线) \w\w 匹配两个单词字符 "a1""_x" → 匹配
\W 匹配非单词字符 \W\W 匹配两个非单词字符 "@!" → 匹配
\s 匹配空白字符(空格、制表符等) \s\s 匹配两个空白字符 " \t" → 匹配
\S 匹配非空白字符 \S\S 匹配两个非空白字符 "ab" → 匹配

三、限定符(Quantifiers)​

限定符 描述 示例 匹配结果
* 匹配前一个字符 0 次或多次 ab*c 匹配 acabcabbc "ac" → 匹配<br>"abbc" → 匹配
+ 匹配前一个字符 1 次或多次 ab+c 匹配 abcabbc "abc" → 匹配<br>"ac" → 不匹配
? 匹配前一个字符 0 次或 1 次 ab?c 匹配 acabc "ac" → 匹配<br>"abbc" → 不匹配
{n} 匹配前一个字符恰好 n 次 a{3} 匹配 aaa "aaa" → 匹配<br>"aa" → 不匹配
{n,} 匹配前一个字符至少 n 次 a{2,} 匹配 aaaaa... "aa" → 匹配<br>"a" → 不匹配
{n,m} 匹配前一个字符 n 到 m 次 a{2,4} 匹配 aaaaaaaaa "aaa" → 匹配<br>"a" → 不匹配
?? 非贪婪模式(尽可能少匹配) a.*?b 匹配 a 到第一个 b "aabab" → 匹配 aab 和 ab

四、特殊字符与转义

符号 描述 示例 匹配结果
\n 匹配换行符 a\nb 匹配跨行的 a 和 b "a\nb" → 匹配
\t 匹配制表符 a\tb 匹配 a 后跟制表符 b "a\tb" → 匹配
\xnn 匹配十六进制字符 \x41 匹配 A "A" → 匹配
\unnnn 匹配 Unicode 字符 \u00A9 匹配版权符号 © "©" → 匹配

五、边界匹配(Boundary Anchors)​

符号 描述 示例 匹配结果
^ 字符串开头 ^abc 匹配以 abc 开头的字符串 "abc123" → 匹配
$ 字符串结尾 abc$ 匹配以 abc 结尾的字符串 "123abc" → 匹配
\b 单词边界 \bword\b 匹配独立的 word "word" → 匹配<br>"sword" → 不匹配
\B 非单词边界 \Bword\B 匹配非独立的 word "sword" → 匹配<br>"word" → 不匹配

六、修饰符(Flags)​

修饰符 描述 示例
i 不区分大小写 /abc/i 匹配 abcABC
g 全局匹配 /a/g 匹配所有 a
m 多行模式 /^a/m 匹配每行的开头 a
s 点号匹配换行符 /.*/s 匹配包含 \n 的字符串

各语言对正则表达式语法的支持情况

语言环境 / 命令 . [] ^ $ {} ? + | ()
vi
Visual C++
awk
sed
delphi
python
java
javascript
php
perl
C#

 

表格说明:

  • 符号  表示该语言 / 工具原生支持对应正则语法
  • 空白单元格表示默认不支持该语法(或需特殊配置)
  • 备注栏补充了特殊情况下的语法支持条件(如 awk 的参数要求)