扩展正则用法小结

正则表达式:regular expression。缩写成REGEXP,是用来匹配文件内容的。通过特点的字符,通配文件内容的。

扩展正则表达式用在egrep命令中,egrep = grep -E

扩展正则表达式的要点有如下几点:

1、字符匹配:

. :表示任意一个字符

[] : 表示匹配中括号内的任意一个字符

[^] : 表示匹配中括号内除外的任意一个字符。

需要注意的:字符集的表示方式,

[[:punct:]] 表示匹配标点符号的

[[:space:]] 表示匹配空白字符的

[[:digit:]] 表示匹配数字的

[[:alpha:]] 表示匹配字母的

[[:lower:]] 表示匹配小写字母的

[[:upper:]] 表示匹配大写字母的

[[:dignum:]] 表示匹配数字字母的。

同时匹配是支持取反操作的。[^[::]]

2、关于次数锚定

*:表示匹配其前面的字符任意次。包含零次

例子:

假如有一个文本的内容如下:

a

b

ab

aab

abb

amnb

acdb

amnbmnb

grep ‘a.*b‘ reg.txt #表示匹配包含以a开头,以b结束的行

?: 表示匹配其前面的字符一次或零次。注意在扩展正则表达式中不要使用转义符\

{m,n}: 表示匹配其前面的字符至少m次,至多n次,主要不要使用转义符\

grep ‘a.{1,3}b‘ reg.txt #表示匹配以a开头,b结束,中间至少有一个,至多有三个任意字符的行

+:表示匹配其前面的字符至少一次。

egrep ‘a.+b‘ reg.txt # 表示匹配包含以a开头,不结束,中间至少有一个字符的行

# 注意,在扩展正则表达式中,?是不需要\转义符的

\b \<: 表示匹配单词首部

grep ‘\<ab‘ reg.txt

grep ‘\bab‘ reg.txt

都是匹配以ab词组开头的行

\> \b: 表示匹配单词尾部

3、位置锚定

^: 表示锚定行首

$:表示锚定行尾

4、分组表示:

():对括号内的内容进行分组匹配;\1,\2,\3(可以进行后项【前项】匹配)

假设有一个文本是:

He love his lover

She like her lover

He like his lover

She like her liker

需要匹配一行中如果有同时包含两个love或两个like的行?

egrep ‘(l..e).*\1‘ reg.txt

[[email protected]t testdir]# egrep ‘(l..e).*\1‘ reg.txt

He love his lover

She like her liker

[[email protected] testdir]# egrep ‘l..e.*l..e‘ reg.txt

He love his lover

She like her lover

He like his lover

She like her liker

需要注意两者的区别用法。什么是后项匹配。

5、扩展正则表达式的或者表示方法

| :对 | 左右两边表示或者。

C|cat 可以匹配的C 和 cat 还是Cat 和 cat呢?

[[email protected] testdir]# egrep ‘C|cat‘ reg.txt

cat

Cat

C

Chinese

可以使用 egrep ‘(C|c)at‘ reg.txt

可以匹配到:Cat和cat

所以| 或的用法是匹配| 两边的字符或者字符串。

时间: 2024-11-02 21:14:30

扩展正则用法小结的相关文章

结构体定义 typedef struct 用法详解和用法小结

typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,struct node n;若用typedef,可以这样写,typedef struct node{}NODE; .在申请变量时就可以这样写,NODE n;区别就在于使用时,是否可以省去struct这个关键字. 第三篇:struct和typedef struct 分三块来讲述:1 首先:在C中定义一个结构体

Java中static、final用法小结(转)

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

1:CSS中一些@规则的用法小结 2: @media用法详解

第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule是一个声明,为CSS提供执行或怎么表现的指令.每个声明以@开头,后紧跟一个可用的关键字,这个关键字充当一个标识符,用于表示CSS该做什么.这是一个通用的语法,尽管每个at-rule有其它语法变体.常规规则 常规规则遵循下面的语法: 复制代码 代码如下: @[KEYWORD] (RULE); @charset

Java中static、final用法小结

一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变.其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中.这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值. 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的

函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)

函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针): 其中的n是一个正整数.表示从文件中读出的字符串不超过 n-1个字符.在读入的最后一个字符后加上串结束标志'\0'.例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入 字符数组str中. [例10.

C++ typedef用法小结 (※不能不看※)

C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量:以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针虽然:char *pa, *pb;也可行,但相对来说没有用typedef的形式直观,

英语语法最终珍藏版笔记- 21it 用法小结

it 用法小结 it 在英语中的意思较多,用法较广,现总结如下. 一.it作句子的真正主语 1.it 指前面已经提到过的人或事物,有时指心目中的或成为问题的人或事物,作真正主语. 例如: What’s this? -It is a sheep? 这是什么??这是一只绵羊. Who is it? -It’s me (I). 谁??是我. It’s the wind shaking the window. 是风刮得窗户响. 2.it指时间.季节.一般用在无人称动词的主语. 例如: What time

iOS开发系列之一 - UIButton 用法小结

// 初始化按钮并设置类型 UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; // 能够定义的UIButton类型有以下6种: // typedef enum { // UIButtonTypeCustom = 0, 自定义风格 // UIButtonTypeRoundedRect, 圆角矩形 // UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用 // UIButto

iOS开发系列之二 - UILabel 用法小结

// 初始化标签 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; // 设置标签文字 label.text = @"This is a test text.This is a test text.This is a test text."; // 设置标签文字字体 // 使用系统字体 label.font = [UIFont systemFontOfSize:20]; //