正则表达式
Posted IT乐仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
正则表达式
一、什么是正则表达式
正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
正则表达式用于字符串处理、表单验证等场合,实用高效。
生活中处处都是正则:
比如我们描述:4条腿
你可能会想到的是四条腿的动物或者桌子,椅子等
继续描述:4条腿,活的
就只剩下四条腿的动物这一类了
在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面就用grep解释正则。
二、grep
参数
-n :显示行号 比如:#grep -n ‘root‘ /etc/passwd
-o :只显示匹配的内容 比如:#grep -o ‘root‘ /etc/passwd
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 比如:#grep -q ‘root‘ /etc/passwd #echo $?
-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,比如:#grep -rl ‘root‘ /etc/passwd
-A :如果匹配成功,则将匹配行及其后n行一起打印出来, 比如:#grep -A 2 ‘root‘ /etc/passwd
-B :如果匹配成功,则将匹配行及其前n行一起打印出来,比如:#grep -B 1 ‘root‘ /etc/passwd
-C :如果匹配成功,则将匹配行及其前后n行一起打印出来,比如:#grep -C 2 ‘root‘ /etc/passwd
-c :如果匹配成功,则将匹配到的行数打印出来,比如:#grep -c ‘root‘ /etc/passwd
-E :等于egrep,扩展,比如:#grep -E ‘hello‘ a.txt
-i :忽略大小写,比如:#grep -i ‘ab‘ a.txt
-v :取反,不匹配,比如:#grep -v ‘hello‘ a.txt
-w:匹配单词,比如:#grep -w ‘hello’ a.txt
grep种类
grep
fgrep
pgrep
egrep
正则介绍
^ 行首 比如:#egrep ‘^root‘ 1.txt
$ 行尾 比如:#egrep ‘$root‘ 1.txt
. 除了换行符以外的任意单个字符 比如: #egrep ‘a.c‘ 1.txt
* 前导字符的零个或多个 比如 : #egrep ‘ab*c‘ 1.txt
.* 所有字符 比如: #egrep ‘a.*c‘ 1.txt
[] 字符组内的任一字符 比如: # egrep [abcde] 1.txt
[^] 对字符组内的每个字符取反(不匹配字符组内的每个字符) 比如: # egrep [^abcde] 1.txt
^[^] 非字符组内的字符开头的行 比如: # egrep ^[^abcde] 1.txt
[a-z] 小写字母 比如: # egrep [a-z] 1.txt
[A-Z] 大写字母 比如: # egrep [A-Z] 1.txt
[a-Z] 小写和大写字母 比如: # egrep [a-Z] 1.txt
[0-9] 数字 比如: # egrep [0-9] 1.txt
{n} 匹配 {}前字符出现的n次的字符串 ,比如:# egrep ‘ab{3}c‘ 1.txt
? 匹配 出现0或1次 比如:# egrep ‘ab?c‘ 1.txt
| 管道分割符,“.....或者....” 比如:#egrep ‘ab{4}c|ab{8}c‘ 1.txt ,#egrep ‘compan(y|ies)‘ 1.txt
{0,} 表示{}前的字符出现0到无穷次 ,比如:# egrep ‘ab{0,}c‘ 1.txt
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章