浅谈正则表达式
在我们使用Linux的时候,经常需要对一些文本进行处理,这里简单介绍一个小工具:grep(Global search REgular expression and Print out the line)。
简单的说正则表达式就是处理字符串的方法,它可以通过一些特殊符号的配合使用,轻松让使用者轻松对数据进行过滤,达到查找、删除、修改某字符的处理程序。 REGEXP :由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能。
元字符分类:字符匹配、匹配次数、位置锚定、分组
语法:grep [OPTIONS] PATTERN [FILE...] 常用选项: --color=auto: 对匹配到的文本着色显示 -v: 显示不被pattern 匹配到的行(即取反) -i: 忽略字符大小写 -n: 显示匹配的行号 -c: 统计匹配的行数 -o: 仅显示匹配到的字符串 -q: 静默模式,不输出任何信息 -A #: after,后#行 行 -B #: before,前#行 行 -C # :context,前后各#行 行 -e :实现多个选项间的逻辑or 关系(grep ?Ce ‘a ’ -e ‘b’ file) -w :匹配 整个单词 -E :相当于egrep -F :相当于fgrep ,不支持正则表达式 字符匹配: . 匹配任意单个字符 [] 匹配指定范围内的任意单个字符 [^] 匹配指定范围外的任意单个字符 [:alnum:] 代表字母和数字 [:alpha:] 代表任何英文大小写字符,亦即 A-Z,a-z [:lower:] 小写字母 [:upper:] 大写字母 [:blank:] 空白字符(空格和制表符) [:space:] 水平和垂直的空白字符(比[:blank:] 包含的范围广) [:cntrl:] 不可打印的控制字符(退格、删除、警铃...) ) [:digit:] 十进制数字 [:xdigit:] 十六进制数字 [:graph:] 可打印的非空白字符 [:print:] 可打印字符 [:punct:] 标点符号 匹配次数: 作用:用在要指定次数的字符后面,用于指定前面的字符要出现的次数 . 匹配一个字符 [] 中括号内的任意字符,多选一 [^] 中括号内的不选,去括号内的反 * 匹配 前面的字符任意次,包括0次(一般处于贪婪模式:尽可能长的匹配) .* 任意 长度的任意字符 ? 匹配 其前面的字符0 或1次 次 + 匹配 其前面的字符至少1次 次 {n} 匹配 前面的字符n次 次 {m,n} 匹配 前面的字符至少m 次,至多n次 位置锚定:定位出现的位置 ^ 行首锚定,用于模式的最左侧 $ 行尾锚定,用于模式的最右侧 ^PATTERN$ 用于模式匹配整行 ^$ 空行 ^[[:space:]]*$ 空白行 &; 或 或 b 词首锚定,用于单词模式的左侧 &; 或 或 b 词尾锚定;用于单词模式的右侧 &;PATTERN&; 仅匹配单词 | 或者(a|b: a 或b ) 分组:() 将一个或多个字符捆绑在一起,当作一个整体进 行处理,string表示从左侧起第一个左括号以及与之匹配右括号之间的 模式所匹配到的字符。如:(root) string1,string2,string3,.. 后向引用:引用前面的分组括号中的模式所匹配字符 , 而非模式本身 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |