热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

正则表达式常用语法详解与grep的高级查找练习

1.基础语法2.grep练习在文章link中,介绍过grep的基本用法,本文学习正则表达式,顺便学习grep的一些进阶用法。练习的文本

1. 基础语法

在这里插入图片描述

2. grep练习

在文章link中, 介绍过grep的基本用法,本文学习正则表达式,顺便学习grep的一些进阶用法。

练习的文本来自于鸟叔私房菜。总共有22行文字。

练习1:中括号 [] 来搜寻字符集合

说明:[] 里面不论有几个字元,他都仅代表某‘一个’字元

题目: 搜寻 test 或 taste 这两个单词对应的行

回答:grep -n 't[ae]st' regular_express.txt

结果:

在这里插入图片描述
题目:找出有数字的那一行

回答:grep -n '[0-9]' regular_express.txt

结果:
在这里插入图片描述

练习2:集合字符[]的反向选择[^]

题目: 找出oo前面不是g的行

回答:grep -n '[^g]oo' regular_express.txt

结果:
v

练习3:行首与行尾字元 ^ $

题目: the出现在行首列的行

回答:grep -in '^the' regular_express.txt

结果:
在这里插入图片描述题目: 开头不是字母的行

回答:grep -n '^[^a-zA-Z]' regular_express.txt

结果:
在这里插入图片描述
注意:本次练习中两个^有着不同的含义。第一个表示开头,第二个表示反向选择。

题目:输出结尾是小数点的行

回答:grep -n '/.$' regular_express.txt

结果:

在这里插入图片描述因为小数点有其他含义,所以必须使用\让小数点变为普通字符

题目: 找出空白行

回答: grep -n '^$' regular_express.txt

效果:
在这里插入图片描述

练习4:任意一个字符. 和 重复字符*

注意:

正则表达式中的*和bash中的万用字符表达的含义不同。

  • .(小数点):代表‘一定有一个任意字元’的意思;
  • *(星星号):代表重复 0 个或多个前面的 RE 字符’的意义。
  • .*就代表零个或多个任意字元

题目: 输出至少有两个连续oo的字符串

回答:
grep -n 'ooo*' regular_express.txt

结果:

在这里插入图片描述

练习5:限定连续字符范围{}

注意:

按照正则表示法的处理原则,要让 { 生效,得要加上反斜线

题目: 找出 2 个 o 以上的 goooo…g所在行

回答:

grep -n 'go\{2,\}g' regular_express.txt
效果:
在这里插入图片描述


推荐阅读
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • Zabbix自定义监控与邮件告警配置实践
    本文详细介绍了如何在Zabbix中添加自定义监控项目,配置邮件告警功能,并解决测试告警时遇到的邮件不发送问题。 ... [详细]
  • 本文深入探讨了Go语言中的接口型函数,通过实例分析其灵活性和强大功能,帮助开发者更好地理解和运用这一特性。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文详细探讨了BCTF竞赛中窃密木马题目的解题策略,重点分析了该题目在漏洞挖掘与利用方面的技巧。 ... [详细]
  • 1、什么是过滤器管道使用竖线(|)将两个命令隔开,竖线左边命令的输出就会作为竖线右边命令的输入。连续使用竖线表示第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入, ... [详细]
  • Python正则表达式(Python RegEx)
    Python正则表达式快速参考常用函数:re.match():从字符串的起始位置匹配一个正则表达式。re.search():扫描整个字符串并返回第一个成功的匹配。re.s ... [详细]
  • 本文介绍了一个使用mii-tool工具检查网络接口状态的Bash脚本,并将结果记录到日志文件中。 ... [详细]
  • 尽管Medium是一个优秀的发布平台,但在其之外拥有自己的博客仍然非常重要。这不仅提供了另一个与读者互动的渠道,还能确保您的内容安全。本文将介绍如何使用Bash脚本将Medium文章迁移到个人博客。 ... [详细]
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • 整理于2020年10月下旬:总结过去,展望未来Itistoughtodayandtomorrowwillbetougher.butthedayaftertomorrowisbeau ... [详细]
  • 本文将详细介绍如何在 MongoDB 中实现不区分大小写的查询,包括使用正则表达式和转换字段值的方法。希望通过本文的介绍,读者能够掌握这些技巧并应用于实际项目中。 ... [详细]
  • 用C语言实现的科学计算器,支持2种常量,10种基本函数,Ans寄存器。相对来说拓展性应该是不错的,思路是首先化简复杂名称的函 ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
author-avatar
不要破网名_329
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有