基础正规表示法特殊字符意义

来源:互联网 发布:go编程语言 编辑:程序博客网 时间:2024/05/01 12:08

RE字符        意义与范例

^word           待搜寻的word在行首。例如 搜寻以#开始的行  grep -n '^#'  a.txt 

word$          待搜索的word在行尾。例如搜索以!结束的行      grep -n  '!$'  a.txt

.                    代表一定有一个字符的字符       例如 grep -n 'e.e'  a.txt

\                    跳脱符号,将特殊符号的特殊意义去除 例如 搜索有单引号的行   grep -n \' a,txt

*                    重复零个到无穷个前一个字符  ,例如找出含有es ,ess  esss等等的字符, grep -n 'ess*'  a.txt

[list]                 字符集合的RE字符,里边列出想要撷取的字符,例如,搜索含有gl或gd的行  grep -n 'g[ld]  a.txt

[n1-n2]            字符集合的RE字符,里边列出想要撷取的字符范围   grep -n '[0-9]' a.txt

[^list]             反向选择,里边列出不要的字符串或者范围   例如不是以字符开头的  grep -n '^[^a-zA-Z]' a.txt

\{n,m\}          连续n到m个前一个RE字符。若为\{n\} 则是连续n个的前一个RE字符 ,若是\{n,\}则是连续n个以上的前一个RE字符,例如在g与g之间有2-5个o   grep -n 'g\o{2,5\}g'   a.txt

强调一点,正规表示法的特殊字符与一般在指令中使用的通配符并不相同,例如在通配符中*表示0到无限多个字符,而在正规表示法中他表示重复0到无限多次前一个字。例如,ls并不支持正规表示法,ls -l  * 表示任意名字的档案, ls -l a*表示以a为开头 档案, 但是使用正规表示法表示以a为开头的档名,则需要搭配支持正规表示法的工具  ls | grep -n '^a.*'