Linux下正则表达式基础

1 什么是正则表达式

正则表达式(REGEXP:REGular EXPression)正则表达式里面的字符不是做本身的意义,通常是做通配,锚定的等特殊意义;并且比通配符更能精确的描述检索文本的需要。它是对字符串操作的一种逻辑公式,通俗的说就是对字符及很多字符的组合结合自身法则组合成一个规则的字符串(即过滤条件)通常把这些由字符或者是正则表达式的字符组合起来的过滤文本过滤条件叫做模式(pattern)。

正则表达式主要应用在文本方面,可以方便的处理文本内容,实现我们对查找一些文本内容的需要;正则表达式灵活性、逻辑性和功能性很强,它的都是由一些普通字符(包括大小写的字母和数字和一些元字符(由特殊字符组成)

2 grep简介

grep:使用基本正则表达式定义的模式来过滤文本的命令,并将符合模式的文本行显示出来(做部分匹配,匹配时整行有部分被匹配到时,显示整行)egrep是grep的扩展,支持扩展正则表达式的元字符

grep常用选项:

-i:不区别大小写

--color查找出来的颜色显示

-v:显示没有被模式匹配到的行

-o:只显示被模式匹配到的字符串

—E:使用扩展正则表达式

-A:当某一行被grep命令匹配到以后,不但显示这一行还可以显示这一行后面的多少行,后面通常跟数字,显示匹配到匹配到的这一行的后面那几行(即数字是代表行数的)

-B:与-A相似后面通常跟数字显示匹配到的这一行的前面那几行(即数字是代表行数的)

-C:与-A相似后面通常跟数字显示匹配到的这一行的前后那几行(即数字是代表行数的)

3 正则表达式的分类及字符介绍

3.1 正则表达式的分类

正则表达式分为两类分别是:(1)基本正则表达式----Basic REGEXP  (2)扩展正则表达式----Extended REGEXP

3.2 正则表达式的字符

3.2.1 基本与扩展字符共同之处

(1)字符匹配

.:表示匹配任意单个字符 例如:grep “.a.” 表示查找字母a有带有个字符如同 a1 ab ar a0等

[]:表示匹配指定范围内的任意单个字符 例如:grep “[:space:]” FILE查找带有空白符的文本行

[:space:]表示所有的空格字符

[:punct:]标点符号集合

[a-z]或[:lower:]:小写字母

[A-Z]或[:upper:]:大写字母

[:slpha:]:大小写字母

[0-9]或[:digit:]:数字

[:alnum:]:数字和大小写字母

[^]:表示指定范围以外的任意单个字符 例如:grep  “[^[:space:]]” FILE查找带有非空白符的文本行

(2)次数匹配:

*:表示匹配其前其前面的字符0次一次或多次 例如:grep “b*” FILE 查找带有b字母并且后带有任意个b的文本行

\?::表示匹配其前面字符0或1次 例如:grep “ab\?” FILE 查找带有ab字母并且b后又跟一个或0个b的文本行

.*:用于基本正则表达式,表示任意长度的任意字符 例如:grep  “a.*” FILE字母a后跟任意字符的文本行

(3)位置锚定

^:锚定行首,此字符后面的任意内容必须出现在行首 例如:grep  “^h”  FILE 查找以小写字母h开头的行

$:锚定行尾,此字符前面的任意内容必须出现在行尾 例如:grep “h$”  FILE 查找以小写字母h结尾的文本行

^$:空白行

\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现

\>或\b:锚定词尾,其前面的任意字符必须为单词的尾部出现

例如:grep  “\bhi\b”  FILE 查找带有hi单词的文本行

时间: 2024-08-02 21:24:04

Linux下正则表达式基础的相关文章

详解基于Linux下正则表达式(基本正则和扩展正则命令使用实例)

前言 正则表达式应用广泛,在绝大多数的编程语言都可以完美应用,在Linux中,也有着极大的用处. 使用正则表达式,可以有效的筛选出需要的文本,然后结合相应的支持的工具或语言,完成任务需求. 在本篇博客中,我们使用grep/egrep来完成对正则表达式的调用,其实也可以使用sed等工具,但是sed的使用极大的需要正则表达式,为了在后面sed篇的书写,就只能这样排序了,有需要的朋友可以把这两篇一起来看. 正则表达式的类型 正则表达式可以使用正则表达式引擎实现,正则表达式引擎是解释正则表达式模式并使用

linux下如何使用正则表达式regex库对通过libpcap在线抓的数据包进行筛选?

问题描述 linux下如何使用正则表达式regex库对通过libpcap在线抓的数据包进行筛选? linux下有一个用c写的通过libpcap抓取数据包的程序,如何通过正则表达式库regex对数据包进行筛选?有大神的话请贴一部分代码什么的,,, 解决方案 libpcap程序里,主体通过pcap_loop或者pcap_dispatch进行循环,需要提供报文的回调函数 在回调函数里面,对报文进行解析,逐层剥离协议头(ip->tcp->7层) 根据需要进行7层解析(例如解析http字段,可选) 对解

linux下的通配符与正则表达式

通配符 *  任意字符,可重复多次     ? 任意字符,重复一次     [] 代表一个字符 举例: [a,b,c] 表示abc中任意一个 通配符的作用是用来匹配文件名的 正则表达式 正则表达式是在文件中匹配符合条件的字符串的 ls find cp是不支持正则表达式的 但是grep awk sed支持正则表达式 [root@hadoop-bigdata01 test]# touch aa [root@hadoop-bigdata01 test]# touch aab aabb [root@ha

[c/c++]关于linux下动态库/静态库的基础问题

问题描述 [c/c++]关于linux下动态库/静态库的基础问题 本人小白,自学没多久,有几个问题一直没搞太明白,望高手解答! 假如我写了一个动态库libmylib.so(我有函数声明mylib.h),里面用到了A同学写的动态库liba.so(我有声明a.h),现在我要在一个新的程序test.cpp里调用我写的mylib.so 问题: 1.test.cpp的头文件需要两个.h都包含还是只要mylib.h? 2.用g++链接时 -lmylib -la都需要吗? 3.假如有一天liba.so文件丢失

linux基础-linux下wall命令的使用

问题描述 linux下wall命令的使用 用wall命令通知其他用户时,发现其他用户接收不了信息,求大神们帮帮忙.

Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]_php基础

需要大家细心和耐心.这些在安装过程中大家将会体会到.不正确的地方大家指正批评.本例是在red hat 9下 php5.2.1 apache2.2.4 MySQL5.0.37 phpmyadmin2.10.0.2 ZendOptimizer-3.2.6 libxml2-2.6.11 的安装与配置 其中 libxml2-2.6.11 我下载在 /usr/ 目录下 其他都下载在 /usr/down 目录下.这些目录在下面安装过程中要用到 关于windows下的php环境配置可以参考 http://ww

零基础学习教程之Linux下搭建android开发环境_Android

不得已重新配置,这里记下详细步骤,分享给大家. 一.安装jdk,具体步骤如下: 1.将jdk-7u4-linux-i586.tar拷贝到linux下得/home/yan/download目录,新建一个目录/home/yan/android.所以和android相关的都安装到/home/yan/android这个目录,所有的源安装文件都放到download下.切换到root,在download目录下输入命令:tar -zxvf  jdk-7u4-linux-i586.tar -C ../andro

linux基础-Linux下blas库安装问题,麻烦啦

问题描述 Linux下blas库安装问题,麻烦啦 Linux小白,刚上手,安装一个程序,需要blas库,但是一直装不上.想咨询一下大家,帮忙搞定的,给发微信红包.麻烦啦- 解决方案 可以加个微信聊,小白问题多 解决方案二: 如果你有安装包的话,就直接解压,然后进入解压后的文件夹 然后 ./configure make make install就ok了 解决方案三: ./configure make make install 解决方案四: 你是用的啥系统.用的源码还是啥? ubuntu 我用 ap

Linux 下Socket编程基础

1. 引言Linux的兴起可以说是Internet创造的一个奇迹.Linux作为一个完全开放其原代码的免费的自由软件,兼容了各种UNIX标准(如POSIX.UNIX System V 和 BSD UNIX 等)的多用户.多任务的具有复杂内核的操作系统.在中国,随着Internet的普及,一批主要以高等院校的学生和ISP的技术人员组成的Linux爱好者队伍已经蓬勃成长起来.越来越多的编程爱好者也逐渐酷爱上这个优秀的自由软件.本文介绍了Linux下Socket的基本概念和函数调用. 2. 什么是So