Linux基础之正则表达式

Linux基础之正则表达式正则表达式:又称规则表达式。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符…

大家好,又见面了,我是你们的朋友全栈君。

正则表达式:又称规则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

给定一个正则表达式和另一个字符串,我们可以达到如下的目的:

1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”):

2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。

我们可以使用 grep 命令来测试我们的正则表达式,grep命令使用正则表达式去尝试匹配指定文件的每一行,并将至少有一处匹配表达式的所有行显示出来。

grep 命令说明:

Linux基础之正则表达式

常用的选项OPTION:

-c 显示匹配到的行数之和
-o 仅显示匹配本身 
-v 显示非匹配,取反 
-i 不区分大小写
-E 支持扩展表达式 
-q 静默模式 
-n 显示匹配到的行的行号
-A 2 显示匹配到的行的后2行
-B 2 显示匹配到的行的前2行
-C 2 显示匹配到的行的前后2行
-V 显示版本信息

使用语法:

grep [OPTION]… PATTERN [FILE]…

grep “[匹配字符]匹配出现次数” /PATH/TO/SOMEFILE

字符匹配:

. 任意单个字符
[] 指定范围内的单个字符
[^] 指定范围外的的单个字符,取反
.* 任意长度的任意字符
[:alnum:] 所有的字母和数字      
[:alpha:] 所有的字母
[:blank:] 所有呈水平排列的空白字符
[:cntrl:] 所有的控制字符
[:digit:] 所有的数字
[:graph:] 所有的可打印字符,不包括空格
[:lower:] 所有的小写字母     
[:print:] 所有的可打印字符,包括空格
[:punct:] 所有的标点字符 
[:space:] 所有呈水平或垂直排列的空白字符
[:upper:] 所有的大写字母    
[:xdigit:] 所有的十六进制数
[=字符=] 所有和指定字符相等的字符

匹配次数 :

* 其前面的字符出现任意次,0次或1次,或者多次
\? 其前面的字符出现0次或1次
\+ 其前面的字符出现1次或多次,至少出现1次
\{m\} 指定字符出现次数
\{m,n\} 至少出现m次,至多出现n次,范围取次 
\{0,n\} 出现最多n次          
\{m,\} 出现最少m次

位置锚定:

^ 行首锚定,用于模式的最左侧 
$ 行尾锚定,用于模式的最右侧 
^……$ 整行, ^$ 空白行,^[[:space:]]*$  空行或者有空白字符的行
\< 或 \b  词首锚定
\> 或 \b  词尾锚定
\<……\>  精确锚定单词

分组及引用:

\{xy\}*ab     表示多个字符出现0,1或多次。 \ 在这里作为转义符使用
\(abcd\){1,3}    表示包含abcd字符串最少出现1次,最多出现3次
\(1..2\).* \1      \1 是指引用从左侧起第一个()之间的字符
\(1..2\).* \(3..4\)\2    \2 是指引用从左侧起第二个()之间的字符
\(1..2\).* \(3..4\).*\(5..6\)\3   \3 是指引用从左侧起第三个()之间的字符

 

使用实例:

查看显示 /etc/fstab 文件以 # 注释开头的行:

Linux基础之正则表达式

这里也可以不加【】:

Linux基础之正则表达式

-v 取反,即显示不以#注释的行,-o 选项为只显示匹配到的字符串:

Linux基础之正则表达式

显示 /etc/fstab 文件非注释的行,锚定行首为 # 注释的行,取反:

Linux基础之正则表达式

显示 /etc/fstab 文件以#号开头,后面跟一个空格,后面为任意长度任意字符的行, -c 选项可以统计匹配到的行数:

Linux基础之正则表达式

在 /tmp/fstab 文件中加入多个空白行,以#号开头,后面仅跟一个空格,且不以空白符结尾的行:

Linux基础之正则表达式

显示 /tmp/sshd_config 文件中不以#注释、空白行以及有空白字符的行:

Linux基础之正则表达式

显示 /etc/passwd 文件中用户名和用户SHELL为一样的行:

Linux基础之正则表达式

显示 /tmp 目录下,以非字母开头,后面跟一个字母,后面为任意长度任意字符的文件或者目录:

Linux基础之正则表达式

显示 /tmp 目录下以非字母开头,后面仅跟一个字母,然后以非字母结尾的文件和目录:

Linux基础之正则表达式

显示 /etc 目录下以p开头不以数字结尾的所有文件和目录:

Linux基础之正则表达式

显示 ip a 或者 ifconfig 命令中的IP地址,-E 选项为支持扩展正则表达式:

Linux基础之正则表达式

-l 选项可以列出包含字符串的文件列表:

Linux基础之正则表达式

-w 精确锚定字符串,相当于\<…|> :

Linux基础之正则表达式

egrep 的使用方法跟 grep 基本一致,不需要转义符 \ 看起来更简洁:

Linux基础之正则表达式

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158715.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月13日 下午7:46
下一篇 2022年7月13日 下午7:46


相关推荐

  • html空格符号怎么打_正则表达式求字符串中空格的个数

    html空格符号怎么打_正则表达式求字符串中空格的个数&nbsp;我们平时键盘空格的空格符号。

    2022年10月5日
    5
  • java英语面试自我介绍_java自我介绍的英文面试

    java英语面试自我介绍_java自我介绍的英文面试自我介绍是向别人展示你自己的一个重要手段 自我介绍好不好 甚至直接关系到你给别人的第一印象的好坏及以后交往的顺利与否 同时 也是认识自我的手段 java 自我介绍的英文面试 我们来看看 java 自我介绍的英文面试 1Goodmorning Itisreallymy Ihopeica

    2026年3月16日
    2
  • 大疆网上测评题库_【大疆待定面试】发了在线测评,感觉题目挺新的。-看准网…

    大疆网上测评题库_【大疆待定面试】发了在线测评,感觉题目挺新的。-看准网…写面经,攒人品。大疆服务运营培训生。1.大疆网上笔试题(比较独创,很有趣,也有歇跟大疆相关的题,要比较熟悉大疆),笔试过后,有岗位笔试作业。2.大疆服务运营培训生笔试作业题目。三道大题,开放性题目,专业和岗位相关,涉及报告类题目。规定期限内提交,审核,通过后进入面试环节。3.一面,微信视频面试。提前约定时间,到点准时打来,直奔主题。自我介绍,针对个人经历开始提问,最后会用英文简单问答一下看英语能力…

    2022年6月17日
    45
  • 【科普】搜索引擎的工作原理

    【科普】搜索引擎的工作原理昨天的文章全球化的误区,本地化的机会,评论里,有人说,搜索引擎技术似乎不需要本地化,这一看就是彻底不懂这个领域的人讲的。当然,实话说,如果有人说,google在中文本…

    2022年7月19日
    20
  • 树莓派4B 安装opencv完整教程基于python3(各种错误解决)

    树莓派4B 安装opencv完整教程基于python3(各种错误解决)本人一直在做opencv的项目,需要入手一块树莓派来在移动端跑opencv,所以买了一块树莓派4B,然后安装上了系统,开启了曲折的opencv安装之旅。首先有幸看到子豪兄的视频,还是很好的,所以直接跟着它子豪兄教你在树莓派上安装OpenCV教程安装opencv,但是后来发现各种不可名状的错误,最后发现他的是基于树莓派3B+,环境是python3.5,但是树莓派4B的环境是python4B,所以不…

    2022年6月11日
    64
  • Python+opencv裁剪/截取图片的几种方式

    Python+opencv裁剪/截取图片的几种方式文章目录前言一、手动单张裁剪/截取二、根据图片的位置坐标进行裁剪/截取三、opencv获取边缘并根据boundingbox截取/裁剪目标四、用YOLO目标检测框裁剪并批量保存总结前言在计算机视觉任务中,如图像分类,图像数据集必不可少。自己采集的图片往往存在很多噪声或无用信息会影响模型训练。因此,需要对图片进行裁剪处理,以防止图片边缘无用信息对模型造成影响。本文介绍几种图片裁剪的方式,供大家参考。一、手动单张裁剪/截取selectROI:选择感兴趣区域,边界框框选x,y,w,hselectR

    2022年6月15日
    66

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号