Ubuntu---regex
摘要:今天我们学习正则表达式(regex),因为掌握这个是用好 grep 命令的前提条件。
1,位置相关的 patten:
^:表示锚定行首,才能匹配。
$:表示锚定行尾,才能匹配。
^$:表示匹配空行,这里的空行表示“回车”,而“空格”或“tab”等都不能算作此处所描述的空行。
^abc$:表示 abc 独占一行的时候,才会被匹配到。
\< 或 \b:匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现。
\> 或 \b:匹配单词边界,表示锚定词尾,其后面的字符必须作为单词首部出现。
\B:匹配非单词边界,与 \b 相反。
2,连续次数匹配的 patten:
*:表示前面的字符连续出现任意次,包括0次。
.:表示任意单个字符(换行符除外)。
.*:表示任意长度的任意字符,与通配符中的 * 意思相同。
\?:表示匹配其前面的字符0次或1次。
\+:表示匹配其前面的字符至少1次,或者连续多次,连续次数没有上限。
\{n\}:表示前面的字符连续出现n次,将会被匹配到。
\{x,y\}:表示前面的字符至少连续出现x次,至多连续出现y次,都能被匹配到。
\{,n\}:表示前面的字符至多连续出现n次,最少0次,都会被匹配到。
\{n,\}:表示前面的字符至少连续出现n次,才会被匹配到。
3,字符,数字,符号匹配的 patten:
[ ] :表示匹配指定范围内的任意单个字符
[^ ]:表示匹配指定范围外的任意单个字符
[[:alpha:]]:表示任意大小写字母
[[:lower:]]:表示任意小写字母
[[:upper:]]:表示任意大写字母
[[:digit:]]:表示 0 到 9 之间的任意单个数字(包括 0和 9)
[[:alnum:]]:表示任意数字或字母
[[:space:]]:表示任意空白字符,包括“空格”、“tab键”等
[[:punct:]]:表示任意标点符号
[0-9] 与 [[:digit:]] 等效
[a-z] 与 [[:lower:]] 等效
[A-Z] 与 [[:upper:]] 等效
[a-zA-Z] 与 [[:alpha:]] 等效
[a-zA-Z0-9] 与 [[:alnum:]] 等效
# 简短格式并非所有正则表达式解析器都可以识别,我们可以使用 -P 选项,表示 grep 使用兼容的 perl 的正则表达式引擎
\d 表示任意单个0到9的数字
\D 表示任意单个非数字字符
\t 表示匹配单个横向制表符(相当于一个tab键)
\s 表示匹配单个空白字符,包括"空格","tab制表符"等
\S 表示匹配单个非空白字符
4,分组与后向引用相关的 patten :
\(\):表示分组,我们可以将其中的内容当作一个整体,分组可以嵌套
\(ab\) :表示将 ab 看作一个整体去处理
\1:表示引用整个正则表达式中第一个分组中匹配到的结果
\2:表示引用整个正则表达式中第二个分组中匹配到的结果
5,转义符:
\. : 表示 .
\\:表示 \ [注意:此时正则表达式要用单引号('regex//'),不能用(“regex//”)]
$ grep 'a\\' regex
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗