浅谈正则表达式
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。这里仅对grep和egrep做简要示例。 基本格式: grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] 常用命令: -v: 反向,显示不能被模式所匹配到的行; -o: 仅显示被模式匹配到的字串,而非整行; -i: 不区分字符大小写,ignore-case -A #:之后的几行字符 -B:之前的几行字符 -n: 显示匹配行及行号,在显示出内容的每行前面会显示行数 基本格式:
“^”
锚定行的开始 如:'^grep'匹配所有以grep开头的行。
“$”锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
“.”匹配一个非换行符('n')的
字符
如:'gr.p'匹配gr后接一个任意字符,然后是p。
“*”匹配零个或多个先前字符 如:' *grep' (注意*前有空格)匹配所有零个或多个空格后紧跟grep的行,需要用egrep 或者grep带上 -E 选项。 .*一起用代表任意字符。“
“[]”匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
“[^]”匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
“(..)”标记匹配字符,如'(love)',love被标记为1。
“&;”锚定单词的开始,如:'&;grep'匹配包含以grep开头的单词的行。
“&;”锚定单词的结束,如'grep&;'匹配包含以grep结尾的单词的行。
“x{m}”重复字符x,m次,如:'o{5}'匹配包含5个o的行。
“x{m,”}重复
x,至少m次,如:'o{5,}'匹配至少有5个o的行。
“w”匹配文字和数字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
单词锁定符,如: 'bgrepb'只匹配grep。
用于egrep和 grep -E的元字符扩展集
“+”匹配一个或多个先前的
。如:'[a-z]+able',匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。
“?”匹配零个或一个先前的字符。如:'gr?p'匹配gr后跟一个或没有字符,然后是p的行。
“a|b|c”匹配a或b或c。如:grep|sed匹配grep或sed
“()”分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
x{m},x{m,},n}
[[:alnum:]] 匹配任何一个字母或数字([A-Za-z0-9]) [[:alpha:]] 匹配任何一个字母([A-Za-z]) [[:lower:]] 匹配任何一个小写字母([a-z]) [[:upper:]] 匹配任何一个大写字母([A-Z]) [[:space:]] 任何一个空白字符:制表符、空格 [[:punct:]] 任何一个标点符号(不包括:[:alnum:]、[:cntrl:]、[:space:]字符集)
次数匹配:用来指定匹配其前面的字符的次数 *: 任意次(0次或多次) .*: 匹配任意长度的任意字符 {m}: 匹配m次 {m,n}:最少匹配m次,最多匹配n次 {0,n}:至多n次; 分组 ()
不作 RE 处理,表达式仅作一般字符串处理,所有 meta 均失去功能. Ps:由于本人此前无linux经验,作为初学者翻阅了大量前人博客,才对正则表达式有了初步概念。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |