正则表达式

一、基础元字符(用于匹配单个字符)

元字符 含义 示例
. 匹配任意单个字符 (除换行符 \n,若开启多行模式则包含) a.c 匹配 abca&ca c
\d 匹配数字 (等价于 [0-9] \d{3} 匹配 123999
\D 匹配非数字 (等价于 [^0-9] \D 匹配 a$
\w 匹配字母、数字、下划线 (等价于 [a-zA-Z0-9_] \w+ 匹配 user123_name
\W 匹配非字母、数字、下划线 (等价于 [^a-zA-Z0-9_] \W 匹配 @#空格
\s 匹配空白字符 (空格、制表符 \t、换行符 \n 等) a\sb 匹配 a ba\tb
\S 匹配非空白字符 \S+ 匹配 hello123
[] 匹配方括号内的任意一个字符(支持范围和排除) [a-z] 匹配 a-z 任意字母;[^0-9] 匹配非数字
` ` 逻辑,匹配左右任意一个表达式 `a b匹配ab`

二、量词(用于指定字符 / 组的重复次数)

默认是贪婪模式,尽可能多匹配

量词 含义 示例
* 匹配0 次或多次(尽可能多匹配,贪婪模式) a* 匹配 ""aaaa
+ 匹配1 次或多次(贪婪模式) a+ 匹配 aaaa(不匹配 ""
? 匹配0 次或 1 次(贪婪模式) a? 匹配 ""a(不匹配 aa
{n} 匹配恰好 n 次 a{3} 匹配 aaa
{n,} 匹配至少 n 次(贪婪模式) a{2,} 匹配 aaaaa...
{n,m} 匹配n 到 m 次 (贪婪模式,m 省略则为至少 n 次) a{1,3} 匹配 aaaaaa
*?/+?/??/{n,m}? 非贪婪模式(尽可能少匹配) a+? 匹配 a(在 aaa 中只取第一个 a

三、分组与捕获(用于将多个字符视为一个整体)

语法 含义 示例
(pattern) 1.捕获组:将 pattern 视为一个整体,可通过索引引用匹配结果 2.将多个字符视为整体,配合量词使用 3.(情况1|情况2)表示多种情况的匹配范围 4.预查匹配项-自定义定位符-四、断言 (ab)+ 匹配 ababab(a)(b)group(1)agroup(2)b
(?:pattern) 非捕获组:仅将 pattern 视为整体,不单独捕获结果(用于优化性能) (?:ab)+ 匹配 abab,但无法单独获取 ab
\n 引用第 n 个捕获组的匹配结果(n 从 1 开始) (\d)a\1 匹配 1a12a2(不能匹配 1a2

四、断言(用于定位匹配的位置,不消耗字符)

断言 含义 示例
^ 匹配字符串开头(多行模式下匹配行开头) ^abc 匹配 abc123(不匹配 xabc
$ 匹配字符串结尾(多行模式下匹配行结尾) abc$ 匹配 123abc(不匹配 abcx
(?=pattern) 正向先行断言:匹配位置后面 必须是 pattern a(?=b) 匹配 ab 中的 a(不匹配 ac 中的 a
(?!pattern) 负向先行断言:匹配位置后面 必须不是 pattern a(?!b) 匹配 ac 中的 a(不匹配 ab 中的 a
(?<=pattern) 正向后行断言:匹配位置前面 必须是 pattern (?<=a)b 匹配 ab 中的 b(不匹配 cb 中的 b
(?<!pattern) 负向后行断言:匹配位置前面 必须不是 pattern (?<!a)b 匹配 cb 中的 b(不匹配 ab 中的 b

五、转义字符 \

  • 用于匹配元字符本身 (如 .*+ 等),例如 \. 匹配小数点,\* 匹配星号。
  • 也用于激活特殊序列(如 \d\w 等)。
相关推荐
吴声子夜歌27 分钟前
正则指引——Ruby
开发语言·正则表达式·ruby
吴声子夜歌3 小时前
正则指引——Golang
开发语言·golang·正则表达式
吴声子夜歌1 天前
正则指引——PHP
开发语言·正则表达式·php
吴声子夜歌3 天前
正则指引——断言
正则表达式
吴声子夜歌3 天前
正则指引——匹配原理
java·正则表达式
吴声子夜歌4 天前
正则表达式——环视
开发语言·正则表达式
吴声子夜歌5 天前
正则表达式——边界
正则表达式
营养充电站5 天前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
吴声子夜歌6 天前
正则表达式——字符组
正则表达式