正则表达式和理解

正则表达式:

正则表达式:由元字符和正常字符组合而成

文本处理工具:grep,egrep,sed,awk,vim,nginx

grep:全局搜索正则表达式,搜索结果那一行显示出来

文本搜索工具:根据用户条件,用元字符和正常字符对目标文件进行逐行搜索,搜索结果显示出来

grep [options], PATTERN [FILE...]

--color[=when],--colour[=when] 对搜索出来的结果进行颜色显示

auto

always

never

-o:只显示被模式匹配到内容

-i:被匹配到内容不区分大小写

-v:显示不能被匹配到的行

-E:扩展的正则表达式

-A#:

如果需要做变量替换的话需要加“”双引号,否则变量将无法识别

如:user=”root”

grep–color=auto “$user” /etc/passwd

正则表达式:(1):由元字符和正常字符组合而成模式,

(2)元字符不表示字符本身意义,主要用于表达控制或通配等功能

基本正则表达式:grep

扩展正则表达式:grep –E,egrep

fgrep:fast,不支持使用正则表达式

基本正则表达式元字符:

. :匹配任意单个字符

[ ] : 匹配指定范围内的任意当字符

[^]:匹配指定范围外的单个字符

注:[ ]这个是字符是固定格式

在使用所有字符或空格字符等一些字符的时候要加上

如[[:digit:]][[:space:]]这类表达方式

[0-9],[[digit]]表示所有数字

[A-Z],[[:upper:]]表示所有大写字母

[a-z],[[:lower:]]表示所有小写字母

[[:space:]] 所有空格字符

[[:alnum:]] 所有字母

[0-9a-zA-Z],[[:alnum:]]所有的数字和字母

次数匹配:在匹配字符后加一个控制符,来表达前面字符想要匹配到的次数

* :任意长度,可以是0次,一次或多次

注:*只对匹配 它前面字符有效

.* :任意长度的任意字符

工作于贪婪模式

\?:0次或1次,表示其左侧字符可以可无

\+:1次或多次:其表示左侧字符至少出现1次

\{m\}: m次:表示其左侧字符精确出现m次:

\{m,n\}:至少m次,至多n次(m<n)

\{0,n\}:至少n次

\{m,\}:至少m次

位置锚定:

^:锚定行首

$:锚定行尾

^$:匹配空白行:

单词锚定:由非特殊字符组成的连续的字符串

\<:锚定词首,也可用\b

\>:锚定词尾,也可用\b

\< pattern \>:匹配pattern能匹配到的整个单词

分组:\(\)

ab*c

在分组中将ab看成一个单词,在*左侧表示可有可无

“\(a.b\).*\1”

How are  you

How dou you do

“\(y.u\).*\1”

\1:引用:模式中自左而右,由第一个左括号以及与之对应的右括号中模式所匹配到内容

\1:引用:模式中自左而右,由第:二个左括号以及与之对应的右括号中模式所匹配到内容

注意:分组中模式,在某次匹配中被grep记忆(保存在变量\1,\2...),也可以被引用

匹配到正则表达式元字符自己的意义要使用转义符/

例:

扩展的正则表达式:

. :匹配任意单个字符

[ ] : 匹配指定范围内的任意当字符

[^]:匹配指定范围外的单个字符

注:[ ]这个是字符是固定格式

在使用所有字符或空格字符等一些字符的时候要加上

如[[:digit:]][[:space:]]这类表达方式

[0-9],[[digit]]表示所有数字

[A-Z],[[:upper:]]表示所有大写字母

[a-z],[[:lower:]]表示所有小写字母

[[:space:]] 所有空格字符

[[:alnum:]] 所有字母

[0-9a-zA-Z],[[:alnum:]]所有的数字和字母

扩展的正则表达式次数匹配时,大多数情况下无须使用转义符\:

*:任意次

?:匹配其前的字符0或1次

+:至少一次

{m}:精确匹配到m次

{m,n}:至少m次,至多次

{m,}:至少m次

{0,n}:至多n次

位置锚定:

^:锚定行首

$:锚定行尾

^$:匹配空白行:

单词锚定:由非特殊字符组成的连续的字符串

\<:锚定词首,也可用\b

\>:锚定词尾,也可用\b

\< pattern \>:匹配pattern能匹配到的整个单词

分组:

()

或者:

a|b:a或者b (或者是两侧所有内容)

命令:

grep –E pattern  FILE...

egrep PATTERN  FILE...

文件查找工具:locate,find

locate: 根据此前updatedb命令生成数据库来完成文件查找

查找方式:查找的是文件名,并非是文件查找所需要的路径

非实时查找,模糊查找:查询结果不精确

必要时,可手动执行updatebd 命令 I/O占用率奇高

find命令:通过遍历指定的目标目录,实时查找符号指定属性的文件

精确匹配:速度略慢

find [options] [查找路径] [查找条件][处理动作]

查找:

-name “文件名”:文件名支持使用globbing

如:find /etc –name “paawd”

-iname “根据文件名查找”

-user username:根据属主查找

-group username:根据属组查找

-uid UID:根据指定UID查找

-gid GID:根据指定的GID查找

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

组合查找条件:

与:-a,查找条件1 –a 查找条件2 –a.....

所有条件必须同时满足

或:-o,查找条件1 –o 查找条件2 –o....

满足其中一个条件即可

非:-not,!

-not 查找条件

查找条件2

-type TYPE:根据文件类型查找

f:普通文件

d:目录文件

l:符号文件

b:设备文件

c:字符设备文件

p:命令名管道文件

s:套接字文件

-size:[+|-]#unit

Unit(文件大小的单位)

带上+号就表示大于你要查找文件

带上- 号就表示小于你要查找文件

常用单位有:k,M,G

根据时间戳查找:

以“天” 为单位

-atime [+|-]#

-mtime[+|-]# 最近修改过的文件

-ctime[+|-]# 最近改变的文件

以“分钟” 为单位

-amin [+|-]#

-mmin

-cmin

根据权限查找

-perm [+|-]mode(权限)

Mode:与mode做精确匹配

+mode:任何一类用户的权限只要能包含对其指定的任何一位权限即可

-mode:每一类用户的权限都包含对其指定的所有权限

时间: 2025-01-08 01:08:50

正则表达式和理解的相关文章

BGP中正则表达式的理解

今天不经意和网上一个朋友聊到H3CTE 考试,不过很遗憾的上我考挂了,所以才和他讨论的,当时讨论BGP 的路由属性控制MED 和LOCAL-PECR ,突然帽出来个正则表达式,很郁闷的是,我一直都没怎么在乎这个东西,以前只是看到过,以为不怎么重要,今天他突然和我讲了下重要性,而且当时考H3CTE 就需要用上这个,汗~~~居然都不知道.和他聊完我立即找这相关方面的资料,找到了一点点,郁闷很难看懂啊,都是一些符号不好理解啊.没法呀,得学习^_^ 下面是对BGP 正则表达式的介绍 . 匹配任意单个字符

grep、正则表达式和扩展正则表达式的理解及运用

grep.正则表达式和扩展正则表达式的理解及运用 一 .grep的基本含义 我们可以从命令man grep中看到gerp命令的帮助文档,从中我们可以得出grep.egrep.fgrep都是文本搜索工具,根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,显示能匹配到的. grep有三种变形:   grep:标准grep命令,支持基本正则表达式   egrep:扩展grep命令,支持基本及扩展的正则表达式   fgrep:fastgrep,它把所有的字母都看作单词,即正则元字符不再特殊,而仅

grep之正则表达式的理解及应用

正则表达式在本周学习中是个难点和重点,其中难免会有很多坑,也难免会不停的往里跳,当跳的比较多了也就长记性了,通过很多次练习慢慢也就能发现其中暗藏玄机,成功的避开大坑选择往小坑里跳了,我相信在以后的学习中会不断进步.勤加练习终究会跳出来的.好了,以下是本人对正则表达式的一点理解,如有错误之处请联系我,会修改和学习的. 一.正则表达式之grep.  正则表达式是一种符号表示法,用于识别文本模式.Linux处理正则表达式的主要程序是grep.grep搜索与正则表达式匹配的行,并将结果输送至标准输出.

对于正则表达式的理解

1.一个正则表达式代表了某类字符串的一个集合,而正则表达式相当于对该字符串集合的特征性质描述. 2.我觉得它就是一个特定的规则,这些"特定的规则",从被匹配的字符串的角度上来看,可以认为描述的是某一类字符串的共同特征:而从正则表达式的角度上来看,也可以认为表达的是一种匹配规则(或称过滤逻辑). 3.,正则表达式是一种特殊的字符串(即正则表达式字符串,往往直接简称为正则表达式或正则式),用来描述.匹配.过滤符合某些特征的其它字符串(即输入字符串.源字符串.被测试的字符串.被匹配的字符串,

正则表达式的理解

正则表达式的目的就是匹配字符串,匹配字符串可以是我们简单理解的字符串,例如:"zhangsan" 但这不是正则表达式美丽所在,它是通过对其他字符的特殊转义来达到复杂匹配字串的支持.这里介绍一下它所支持的基本转义符 1 基本正则式 1.1) ^   表示文本行的开头 eg: "^a"  表示匹配行的第一个字符为"a"的意思 1.2) $   表示文本行的结尾 eg: "$a"  表示匹配行的结尾前面的一个字符为"a&q

正则表达式学习理解

何为正则表达式? 首先,我们先来回答一个问题,就是如何向一个人介绍什么是邮箱?(单纯的回答) 我们可能会这样说,只要满足:首先是一串英文,数字,下划线.然后是@符号,在然后是一串英文,数字,其次是  .   最后是一串因为.

正则表达式符号理解

正则表达式元字符表 元字符 描述 \ 将下一个字符标记符.或一个向后引用.或一个八进制转义符.例如,“\\n”匹配\n.“\n”匹配换行符.序列“\\”匹配“\”而“\(”则匹配“(”.即相当于多种编程语言中都有的“转义字符”的概念. ^ 匹配输入字符串的开始位置.如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置. $ 匹配输入字符串的结束位置.如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置. * 匹配前面的子表达

正则表达式基础、原理及优化

前言 正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些匹配某个模式的文本.简单说就是一个特殊的字符串去匹配一个字符串.定义了一些规则,用于匹配满足这些规则的字符串. 对于正则表达式应该很多人第一感觉就是很难,完全没有规律,看不懂. 我觉得可能有以下几个原因: 1.读不懂. 各种不同的字符组合一起,难以理解.确实,对于熟悉正则表达式的人来说,一个稍微长点的正则表达式想要理解起来,可能也要花费一定的功夫.可读性差是正则表达式的

node.js学习笔记之正则表达式

每种编程语言里都有正则表达式,而且内容基本上都是一样的,今天就来说说我对正则表达式的理解. 我觉得正则表达式实际上就是一种规则,一种针对字符串的规则,我们可以通过正则表达式来获取我们想要的同类型字符串或者检验某一字符串是否符合我们的要求. 正则表达式可以参与计算的符号有: (),小括号,或叫圆括号,是一个分组,也是个集合.他的作用是一个匹配一串字符.比如: /(abc)/;   该句的作用是匹配源字符串中是否有"abc"这样的一串字符; [],中括号,或叫方括号,是一个集合,他的作用是