正则表达式常用符号
[]
[] 匹配一组可能出现的字符 例:[Pp]既可以匹配大写的P也可以匹配小写的p
连字符(-)代表区间
匹配任意数字可以使用[0-9];
如果想要匹配所有小写字母,可以写成[a-z];
想要匹配所有大写字母可以写成[A-Z]
想要匹配所有汉字可以写成[一-颙]
\w | 与任意单词字符匹配,任意单词字符表示 [A-Z]、 [a-z]、[0-9] |
---|---|
\d | 与任意数字匹配 |
\s | 匹配空白字符,比如空格,tab、换行等 |
\b | 单词边界 |
\N | 可以引用编号为N的分组,根据使用到匹配到的结果 |
快捷方式也可以取反,例如对于\w的取反为\W,将小写改写成大写即可,其他快捷方式也遵循这个规则。
\
转义字符。正则表达使用了 - 号代表了区间,但是我们有时候需要匹配的符号就是 -号,该怎么办呢?
这个时候我们需要对-号进行转义操作,即 -。
^
在括号内表示取反。
在括号外表示字符串开始。
$
表示字符串结束。
在vscode中,$1可以表示第一个分组得到的量。
例如layer1
使用layer(\d)并替换成hello$1就可以替换成hello1。
.
.字符代表匹配任何单个字符,它只能出现在方括号以外。
?
? 符号指定一个字符、字符组或其他基本单元可选,这意味着正则表达式引擎将会期望该字符出现零次或一次。
也可以表示非贪婪模式。
(?:表达式)不捕获数据,还能使用分组的功能,非捕获分组。
(?=表达式),指在某个位置向右看,表示所在位置右侧必须能匹配表达式。
如果要取出喜欢两个字,要求这个喜欢后面有你,这个时候就要这么写:喜欢(?=你),这就是正向先行断言。
(?!表达式)的作用是保证右边不能出现某字符。
(?<=表达式),指在某个位置向左看,表示所在位置左侧必须能匹配表达式
(?<!表达式),指在某个位置向左看,表示所在位置左侧不能匹配表达式
{}
在一个字符组后加上{N} 就可以表示在它之前的字符组出现N次。
{M,N},M是下界而N是上界。\d{3,4} 既可以匹配3个数字也可以匹配4个数字,不过当有4个数字的时候,优先匹配的是4个数字,这是因为正则表达式默认是贪婪模式,即尽可能的匹配更多字符,而要使用非贪婪模式,我们要在表达式后面加上 ?号。
{M,}表示M到无穷大,+ 匹配1个到无数个,使用 *代表0个到无数个。
()
在正则表达式中还提供了一种将表达式分组的机制,当使用分组时,除了获得整个匹配。还能够在匹配中选择每一个分组。
要实现分组很简单,使用()即可。
在vim或者sed中使用s/old/new/g的匹配格式时,()需要使用转义字符,
|
使用分组的同时还可以使用 或者(or)条件。例如要提取所有图片文件的后缀名,可以在各个后缀名之间加上一个 |符号。
(?:表达式)不捕获数据,还能使用分组的功能。
本文作者:心比天高xzh
本文链接:https://www.cnblogs.com/xzh-personal-issue/p/17078939.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!