首页 > 系统相关 >专题(十九)Linux 下的正则表达式

专题(十九)Linux 下的正则表达式

时间:2024-10-18 15:44:42浏览次数:1  
标签:字符 匹配 正则表达式 test Linux 字符串 egrep 十九

一、作用与介绍

  • 正则表达式通常用于判断语句中,用来检查某一字符串是否满足某一格式
  • 正则表达式是由普通字符与元字符组成
    • 普通字符:包括大小写字母、数字、标点符号及一些其它符号
    • 元字符:是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式
  • Linux 中常用的有两种正则表达式引擎
    • 基础正则表达式:BRE
    • 扩展正则表达式:ERE
  • 使用到正则表达式的Linux 工具
    • grep
    • sed
    • awk
    • egrep

二、基础正则表达式常见元字符

1、特殊字符

特殊字符 用法说明 举例说明 备注
\ 转义符,对特殊字符进行转义,将特殊字符当作普通字符进行匹配 a\.b  匹配上的字符为 a.b  
\+ 匹配其前面的字符出现最少1次,即:肯定有且>=1次    
^ 匹配指定字符开头的行 ^tux  匹配以 tux 开头的行  
$ 匹配已指定字符结尾的行 tux$  匹配以 tux 字符串结尾的行  
. 匹配除换行符\r\n之外的任意单个字符    
[] 匹配列表中的一个字符 a[0-9]b  能够匹配上axb字符串,其中x是0-9中的任意一个数字    
[^ ] 匹配任意不在列表中的一个字符 a[^0-9]b 能够匹配上axb字符串,其中x不是0-9中的任意一个数字    
* 匹配前面子表达式0次或者多次  goo*d  能够匹配上 good、goood、gooood 等  
\{n\} 匹配前面的子表达式n次 [O-9]\{2\}   匹配两位数字  
\{n,\} 匹配前面的子表达式不少于n次 [0-9]\{2,\}   匹配两位及两位以上数宁  
\{n,m\} 匹配前面的子表达式n到m次 [0-9]\{2,3\}  匹配两位到三位数字  

注: egrep、awk使用{n}、{n, }、{n, m}匹配时“{}"前不用加"\”

2、定位符

特殊字符 用法说明 举例说明 备注
^ 匹配输入字符串开始的位置    
$ 匹配输入字符串结尾的位置    

 

3、非打印字符

特殊字符 用法说明 举例说明 备注
\n 匹配一个换行符 echo -e "hello\n"

输出结果为:

hello

 

\r 匹配一个回车符    
\t 匹配一个制表符 echo -e "hello\tworld"

输出结果为:

hello  world

 

三、扩展正则表达式

  简化表达式,如:使用基础正则表达式查询除文件中空白行与行首为“#”之外的行(通常用于查看生效的配置文件),执行“grep -v‘^$’test.txt | grep -v‘^#’”即可实现。这里需要使用管道命令来搜索两次。如果使用扩展正则表达式, 可以简化为“egrep -v ‘^$|^#’ test.txt”,其中,单引号内的管道符号表示或者(or)。

1、可以使用扩展正则表达式的工具

  • grep -E 
  • egrep
  • awk -E

2、常见的扩展正则表达式的元字符

特殊字符 用法说明 举例说明 备注
+ 重复一个或者一个以上的前一个字符 egrep -n 'wo+d' test.txt   即可查询"wood" "woood" "woooooood"等字符串  
? 零个或者一个的前一个字符 egrep -n 'bes?t' test.txt   查询“bet”“best”这两个字符串  
| 使用或者(or)的方式找出多个字符 egrep -n 'of|is|on' test.txt  查询"of"或者"if"或者"on"字符串  
()  查找“组”字符串,()构成一个子表达式 egrep -n 't(a|e)st' test.txt   可查询"tast"或者"test"字符串  “tast”与“test”因为这两个单词的“t”与“st”是重复的,所以将“a”与“e”列于“()”符号当中,并以“|”分隔,即可查询"tast"或者"test"字符串
()+  辨别多个重复的组 egrep -n 'A(xyz)+C' test.txt   该命令是查询开头的"A"结尾是"C",中间有一个以上的"xyz"字符串的意思 可以匹配上 AxyzC 、AxyzxyzC、AxyzxyzxyzC 等字符串

 

 

 

标签:字符,匹配,正则表达式,test,Linux,字符串,egrep,十九
From: https://www.cnblogs.com/sandyflower/p/18474402

相关文章

  • 10.18 Linux命令(续)
    39、tar包(1)tar-cvf打包格式:tar-cvf压缩包文件1、文件2,文件3等案例:tar-cvfabc.taraabbccc打包v显示打包进度f指定文件x解包(2)解压tar-xvf格式:tar-xvf压缩包名解压tar.gz包打包:tar-zcvf压缩包名.tar.gz......
  • linux下使用VSCODE 调试python
    文章目录一、环境准备安装VSCode:安装Python:二、环境测试创建Python文件:编写测试代码运行Linux下使用VSCode调试Python在Linux环境中进行Python开发时,一个高效、直观的调试工具是必不可少的。VisualStudioCode(VSCode)凭借其强大的编辑器功能和丰富的扩展插件,......
  • Linux配置静态IP
    在日常实验中我们需要使用ssh工具来远程我们的linux系统,因此就需要配置系统的静态IP。linux系统一切皆文件,配置静态ip也就是在配置网络ip地址的文件内修改。linux系统的网络配置文件是放在/etc/sysconfig/network-netwrok内(CentOS6的网络配置文件是ifcfg-eth0,CentOS7的网络配置文......
  • C++连接Simnow Linux API实现简单量化交易操作文档
    C++连接SimnowLinuxAPI实现简单量化交易技术文档写在前面:本文为本人学习上期所SimnowLinuxAPI连接行情和交易接口时整理的学习笔记,欢迎沟通交流~一、背景SimNow是上海期货交易所全资子公司上期技术公司专为投资者打造的期货模拟仿真交易平台,通过CTP系统,量化交易投......
  • C++学习路线(十九)
    函数返回值指针#include<iostream>usingnamespacestd;int*add(intx,inty){ //定义一个指针 int*sum=NULL; //让指针指向堆内存也就是sum的值是堆的地址 sum=newint; *sum=x+y; //返回指针以拷贝的方式返回 //也就是外部的sum指针指向的地......
  • 查看Linux下软件的开源许可证协议
    [root@sre01~]#rpm-qikernelName:kernelVersion:3.10.0Release:1062.el7Architecture:x86_64InstallDate:Sat13Apr202403:44:00PMCSTGroup:SystemEnvironment/KernelSize:67060903License:GPLv2......
  • 嵌入式Linux编程基础 | GCC 静、动态函数库的创建与链接方法
    一、静态库与动态库的区别库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so表示一个命名为libhello的动态库,libhello.a则是一个命名为libhello的静态库。当使用静态库时,连接器找出程序所需的函数,并将其拷贝到可执行文件,一旦链接成功,静态程序库......
  • Linux常用命令
    Linux的使用中常用的一些命令如下:查看文档命令:cat:查看文档内容:cat<file>:全部显示一个文件的所有内容,默认不显示行号cat-n<file>:查看文件,同时会显示行数。head:只查看开头的内容head<file>:默认只显示开头的前10行head-n<num><file>:指定显示开头的前num行......
  • 正则表达式
    正则表达式正则表达式是一种匹配输入文本的模式。.Net框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。作用:查询,从字符串中获取我们想要的部分匹配,判定字符串是否符合规则如判断用户输入的密码是否正确,邮箱格式是否合法等。字符转义......
  • 第36篇 linux服务器上启动framework应用程序流程
    framework开发的应用程序,一般是不会在linux服务器上运行的,但是我们可以通过mono进行应用部署1.查看linux服务上是否已经安装mono-core方式1:rpm命令查看rpm-qa|grepmono-core有结果返回,说明已经安装方式2:使用yumlistinstalledyumlistinstalled|grepmono-core......