超详细的正则表达式(上:正则表达式语法)
正则表达式定义正则表达式语法,又称规则表达式。(英语: ,在代码中常简写为regex、regexp或RE),正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。一句话说就是匹配有规律的东西
一:正则符号分类符号
基础正则
“^”,“$”,“.”,“*”,“[]”
扩展正则
“+”,“|”,“()”,“{}”,“?”
一些语言的的特殊扩展(比如perl,这部分就不讲了)
二:正则表达式和通配符的区别
分类用途
正则表达式( )
grep,sed,swk三种命令,以及一些高级语言,是用来在各种方面进行过滤的
通配符( )
用来匹配文件名的(比如*),大部分命令都支持
当然正则表达式语法,这两种在某些方面重合度很高,不用太过在意区别,正则表达式功能更强大。
三:基础正则
一下所有演示都会以这个名叫test.txt文件作为基础(随便写的乱码,更能体现出正则表达式)
^... 以“...”开头的行,例如^as,则表示以as开头的行
执行grep “^as”test.txt就可以得到以下结果
2. ... 以“...”结尾的行,例如 ds
执行grep “ds$”test.txt得到以下结果
3. ^$ 开头结尾放一起,表示空行
例如grep -n '^$' test.txt(grep的-n表示显示行号)
4. “.”表示任意一个字符,
例如grep -n '.' test.txt (表示空行外的所有行)
5. “*”表示前一个字符连续出现多次, 可以是0次。
例如grep -n '3*' test.txt(找出含有至少0次3的行)
这时有人就有疑惑了,只有第3行有两个3,为什么所有行都显示了?
因为所有行其它行都有0个3,所以所有行都显示了。
要想找出至少有一个3的行,应该这么做
6. “.*”表示所有字符(包括空行)
例如grep -n '.*' test.txt可以显示出文件所有行
7. “[]”, 表示匹配中括号中的任意一个字符,注意, []中的所有字符都会被当成字符来匹配,比如.,|
例如:grep -n '[0-9]' test.txt,选出了包含数字的行
——————————————————————————————————————
四:扩展正则(扩展正则对于grep需要用egrep或grep -E)
“+”前一个字符连续出现了至少一次。
例如grep -En '3+' test.txt
2. "|" 表示或者
例如 grep -En 'asd | fas' 就表示选出包含asd或fas的行
3. “()”被括起来的内容相当于一个整体
比如grep -En 'as(2|d)' test.txt
4. “{}” 表示连续出现,例如 ‘a{n, m}’,表示a连续出现至少n次,至多m次
例如grep -En '[0-9]{2, 5}' test.txt
5. “?”表示连续出现0次或1次
例如grep -En '1?23' test.txt
最后,我创建了一个商业级C++技术群,里面有各种C++资料。
我也会在里面解决各种问题,从开发到部署。
也包括正则表达式
本文共 641 个字数,平均阅读时长 ≈ 2分钟
相关文章
- 视觉卷不动了,来看看分子领域?全球首个分子图像自监督学习框架ImageMol来了
- uniapp打包成H5部署到服务器教程
- IntelliJ IDEA生成 Serializable 序列化 UID 的快捷键
- 【已解决】当前运行的基座不包含原生插件[UZK-Alibcsdk],请在manifest中配置该插件,重新制作
- 火了一整年的多模态学习,在工业界的落地和实践进展到底怎么样了?
- uniapp 接入百川
- Windows下安装Nginx错误总结
- 一句话生成3D模型:AI扩散模型的突破,让建模师慌了
- Java使用echarts记录
- uniapp打开外部链接方式
- 领券网添加领取外卖优惠券修改-【凯哥自己的领取各大电商优惠券】
- Echarts漏斗图形的,怎么保障当数据是0的时候,漏斗图形一直存在。
- Echarts图表的柱状图和漏洞图形怎么将数据值显示出来
- 如何让AI具有通用能力?新研究:让它睡觉
- 解决org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException
- Stable Diffusion 2.0来了!网友:太快了,V1还没整透彻,V2就来了
- 【图文教程】怎么使用postman测试文件上传
- 点外卖等琐事到底能不能靠AI?我们找5款语音助手聊了500句话
- 【若依系统-前后端不分离版本的】怎么在列表中直接修改某个字段的值?
- 微众银行揭晓微众学者计划,支持科研实干者研以致用