博客
关于我
Linux基础之正则表达式
阅读量:642 次
发布时间:2019-03-14

本文共 2055 字,大约阅读时间需要 6 分钟。

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

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

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

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

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

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

grep 命令说明:

常用的选项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 文件以 # 注释开头的行:

这里也可以不加【】:

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

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

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

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

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

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

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

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

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

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

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

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

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

 

 

转载地址:http://hnjlz.baihongyu.com/

你可能感兴趣的文章
ndk特定版本下载
查看>>
NDK编译错误expected specifier-qualifier-list before...
查看>>
Neat Stuff to Do in List Controls Using Custom Draw
查看>>
Necurs僵尸网络攻击美国金融机构 利用Trickbot银行木马窃取账户信息和欺诈
查看>>
Needle in a haystack: efficient storage of billions of photos 【转】
查看>>
NeHe OpenGL教程 07 纹理过滤、应用光照
查看>>
NeHe OpenGL教程 第四十四课:3D光晕
查看>>
Neighbor2Neighbor 开源项目教程
查看>>
neo4j图形数据库Java应用
查看>>
Neo4j图数据库_web页面关闭登录实现免登陆访问_常用的cypher语句_删除_查询_创建关系图谱---Neo4j图数据库工作笔记0013
查看>>
Neo4j图数据库的介绍_图数据库结构_节点_关系_属性_数据---Neo4j图数据库工作笔记0001
查看>>
Neo4j图数据库的数据模型_包括节点_属性_数据_关系---Neo4j图数据库工作笔记0002
查看>>
Neo4j安装部署及使用
查看>>
Neo4j电影关系图Cypher
查看>>
Neo4j的安装与使用
查看>>
Neo4j(1):图数据库Neo4j介绍
查看>>
Neo4j(2):环境搭建
查看>>
Neo4j(3):Neo4j Desktop安装
查看>>
Neo4j(4):Neo4j - CQL使用
查看>>
Neo图数据库与python交互
查看>>