对正则表示式及grep的总结

正则表达式学习总结

 

 

什么是正则表达式

正则表达式,又称正规表示法常规表示法英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

一.正则表达式的各个元字符

(1)字符匹配:

. -->表示匹配任意单个字符

[] --> 匹配指定范围内的任意单个字符

[^]:取反

(2)次数匹配元字符:用于实先制动其前面的字符所能出现的次数

* -->任意长度,他前面的字符可出现任意次

\? -->1次或0次,其前面的字符可有可无

\{m\} -->m次,表示他前面的字符要出现m次

\{m,n\} -->至少m次,至多n次 注:m最小为零不可省略,n无上限可省略

.* 任意长度的任意字符                                                                                引用用 \1

(3)位置锚定

^  行首锚定  $ 行尾锚定     ^$ 空白行

不包含特殊子字符的连续字符所组成的字符串:

\<  词首   \>  词尾        都可以用\b代替

(4)分组:\(\)

括号有编号:\n 引用第n个括号所匹配的内容,不是模式本身

二.grep的常用选项

-v: 反向选取

-o : 显示被模式匹配的字串可不是整行

-i : ignore-case,忽略大小写

-E: 支持使用正则扩展表达式

-A: 现实匹配到内容的前几行

-B : 显示匹配到内容的后几行

-C : 显示匹配到内容的前后几行

三.各选项和正则表达式的配合使用

grep [option] ...‘PATTREN‘ FILE  --color=auto

1.       grep –v “#” /etc/fstab   显示没有“#”的行 用-v取反

2.       grep –o “\<user1\>”/etc/passwd  user1被锚定词首词尾–o表示不显示整行

3.       grep –A2  “^zhengzhou\>” /etc/passwd   Zhengzhou被锚定了行首–A2表示显示下面两行

4.       grep –B2  “^zhengzhou\>” /etc/passwd   -B2表示显示上两行

5.       grep –C2  “^zhengzhou\>” /etc/passwd   -B2 表示显示上下两行

6.       grep “tuser*\(.\)\3”/etc/passwd   r*表示r可以出现任意次 \(.\)表示“.”被分组  \3表示分组被引用了三次

7.       grep “\(user\).*\1” /etc/passwd  .*表示任意字符任意长度

8.       grep “b\{2,4\}” /etc/fstab  b\{2,4\} 表示b最少出现2次最多出现4次的行

四.Grep的扩展egrep (grep –E)

- grep 之下不支持  这两种 modifier,  egrep 则可.      

 

?: 匹配其前面的字符01次;

+: 匹配其前面的字符至少1

|:表示或关系,ab|bcb表示abbcb

):将部分内容合成一个单元组。如ab|bcb等,()的好处是可以对小组使用 + ? * 等。

 

Grep “tuser|^z” /etc/passwd  查找包含tuser或者以z开头的行

个人觉得需要使用egrep是可以用grep –E代替,不仅可以是用egrep的扩展功能还可以减少有出错的概率

本文若有错误我意思模糊的地方请各位指正,谢谢!

对正则表示式及grep的总结

时间: 2024-10-14 19:50:26

对正则表示式及grep的总结的相关文章

用正则表示式分析网页

昨晚现学现卖了一下正则表达式,记录一下 爬的网页:http://www.qiushibaike.com/hot/page/1/?s=4930745 首先来看源码 <a href="/users/13145907/" target="_blank" rel="nofollow"> <img src="http://pic.qiushibaike.com/system/avtnew/1314/13145907/medium

【Shell】基础正则表示法及grep用法

——<鸟哥的私房菜> 正规表示法就是处理字串的方法,他是以行为单位来进行字串的处理行为:正规表示法透过一些特殊符号的辅助,可以让使用者轻易的达到『搜寻/删除/取代』某特定字串的处理程序:只要工具程序支持正规表示法,那么该工具程序就可以用来作为正规表示法的字串处理之用:正规表示法与万用字节是完全不一样的东西!万用字节 (wildcard) 代表的是 bash 操作介面的一个功能, 但正规表示法则是一种字串处理的表示方式! grep 正规表示法里面是很常见也很常用的一个工具,他最重要的功能就是进行

常用的正则表示式

非负整数:^\d+$ 正整数:^[0-9]*[1-9][0-9]*$ 非正整数:^((-\d+)|(0+))$ 负整数:^-[0-9]*[1-9][0-9]*$ 整数:^-?\d+$ 非负浮点数:^\d+(\.\d+)?$ 正浮点数 : ^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)$ 非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$ 负浮点数:^(-((正浮点数正则式

python学习-正则表示式及re模块

python中的所有正则表达式函数都在re模块中.import re导入该模块. 1,创建正则表达式对象 想re.compile()传入一个字符串值,表示正则表达式,它将返回一个Regex模式对象. 创建一个匹配手机号的(\d表示一个数字字符) mphone_regex = re.compile(r'\d\d\d-\d\d\d\d-\d\d\d\') 2,匹配正则表达式 regex对象的search()方法查找传入的字符串,寻找该正则表达式的所有匹配.如果字符串中没有找到该正则表达式模式,sea

正则表示式

以前看到别人正则里写(?=),(?!)...这些,觉得云里雾里,完全不知道什么意思,今天突然搜到专门介绍的文章,看完后,有一种拨开云雾见月明的感觉.特此分享下. 正则表达式有俩种特别的情况: 1. 零宽断言:用于查找在某些内容(但不包括这些内容)之前或之后出现的字符,也就是说像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言. (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置后面能匹配表达式exp.如:\b\w+(?=ing\b)匹配以

正则表示式_常用的正则验证

<script type="text/javascript"> /* * 手机号码格式 * 只允许以13.15.18开头的号码 * 如:13012345678.15929224344.18201234676 */ var regMobile=/^1[3,5,8]\d{9}$/; /* * 固定电话号码格式 * 因为固定电话格式比较复杂,情况比较多,主要验证了以下类型 * 如:010-12345678.0912-1234567.(010)-12345678.(0912)123

shell文本过滤编程(一):grep和正則表達式

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] Linux系统中有非常多文件,比方配置文件.日志文件.用户文件等.文件里都包括了大量的信息,我们能够使用cat等命令轻松将其输出到屏幕,但假设要从文件里分析或提取数据,还须要其它工具来实现.而linux正好提供了这些工具:grep.awk.sed等.把这些工具使用好,能够极大地提高你的工作效率,对系统管理员分析数据有极大帮助,而对linux开发者来说也能够在开发

正则表达式和grep命令的用法

正则表达式和grep命令的用法: 一.正则表达式: 正则表达式(也称为regular Expression,简称RE)就是由普通字符(例如字符a到z)以及特殊字符(称之为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为,正则表示通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.gr

Linux正则表达式grep与egrep

Linux正则表达式grep与egrep 正则表达式:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容.其实正则表达式,只是一种思想,一种表示方法.只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串.常用的工具有grep, sed, awk,这三个都是针对文本的行才操作的. grep  过滤器语法: grep  [-cinvABC]  'word'  filenam