正则表达式(参考codesheep)
-
正则表达式就是一个字符串,描述一定的规则。用有限的符号,表达无限的序列。
-
字符
表达式 描述 [abc]
字符集。匹配集合中所含的任一字符。 [^abc]
否定字符集。匹配任何不在集合中的字符。 [a-z]
字符范围。匹配指定范围内的任意字符。 .
匹配除换行符以外的任何单个字符。 \
转义字符。 \w
匹配任何字母数字,包括下划线(等价于 [A-Za-z0-9_]
)。\W
匹配任何非字母数字下划线(等价于 [^A-Za-z0-9_]
)。\d
数字。匹配任何数字。 \D
非数字。匹配任何非数字字符。 \s
空白。匹配任何空白字符,包括空格、制表符等。 \S
非空白。匹配任何非空白字符。 -
分组和引用
表达式 描述 (expression)
分组。匹配括号里的整个表达式。分组默认都是捕获的 (?:expression)
非捕获分组(非捕获分组可以提高性能和简化逻辑)。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。 \num
对前面所匹配分组的引用。比如 (\d)\1
可以匹配两个相同的数字,(Code)(Sheep)\1\2
则可以匹配CodeSheepCodeSheep
。 -
锚点/边界
表达式 描述 ^
匹配字符串或行开头。 $
匹配字符串或行结尾。 \b
匹配单词(前或后)边界。比如 Sheep\b
可以匹配CodeSheep
末尾的Sheep
,不能匹配CodeSheepCode
中的Sheep
。\B
匹配非单词边界。比如 Code\B
可以匹配HelloCodeSheep
中的Code
,不能匹配HelloCode
中的Code
。 -
数量表示
表达式 描述 ?
匹配前面的表达式0个或1个。即表示可选项。优先匹配1次 +
匹配前面的表达式至少1个。优先匹配n次 *
匹配前面的表达式0个或多个。优先匹配n次 ` ` {m}
匹配前面的表达式m个。 {m,}
匹配前面的表达式最少m个。优先匹配∞次 {m,n}
匹配前面的表达式最少m个,最多n个。优先匹配n次 *通过在 、+ 或 ? 限定符之后放置 ?,该表达式从"贪婪"表达式转换为"非贪婪"表达式或者最小匹配。
a{1, 3}? // 匹配字符串'aaa'的话,会匹配a而不是aaa
-
预查断言:
表达式 描述 (?=)
正向预查。比如 Code(?=Sheep)
能匹配CodeSheep
中的Code
,但不能匹配CodePig
中的Code
。(?!)
正向否定预查。比如 Code(?!Sheep)
不能匹配CodeSheep
中的Code
,但能匹配CodePig
中的Code
。(?<=)
反向预查。比如 (?<=Code)Sheep
能匹配CodeSheep
中的Sheep
,但不能匹配ReadSheep
中的Sheep
。(?<!)
反向否定预查。比如 (?<!Code)Sheep
不能匹配CodeSheep
中的Sheep
,但能匹配ReadSheep
中的Sheep
。 -
特殊标志
表达式 描述 /.../i
忽略大小写。 /.../g
全局匹配。 /.../m
多行修饰符。用于多行匹配。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix