码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式和理解

时间:2015-04-06 19:02:11      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:正则表达式

 

正则表达式:

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

 

文本处理工具:grepegrep,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 –Eegrep

       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:]]所有的数字和字母

 

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

*:任意次

 ?:匹配其前的字符01

+:至少一次

{m}:精确匹配到m

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

    {m,}:至少m

    {0n}:至多n

     位置锚定:

^:锚定行首

$:锚定行尾

 ^$:匹配空白行:

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

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

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

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

分组:

()

或者:

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

命令:

grep –E pattern  FILE...

egrep PATTERN  FILE...

 

 

文件查找工具:locatefind

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:每一类用户的权限都包含对其指定的所有权限

 

 

 


正则表达式和理解

标签:正则表达式

原文地址:http://10043080.blog.51cto.com/10033080/1629166

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!