1,什么是正则表达式?
简单来说就是用正则表达式语言创建的,快速进行文本内容的匹配查找特定字符串或替换工作,对文本操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
2,正则表达式的应用场景?
用来进行文本特殊内容的查找,并进行替换,适合文本文件查找替换的内容量比较大且有相同规则的字符串
3,给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
a. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
b. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
4,正则表达式的特点是:
a. 灵活性、逻辑性和功能性非常的强;
b. 可以迅速地用极简单的方式达到字符串的复杂控制。
c. 对于刚接触的人来说,比较晦涩难懂。
文本处理工具 grep egrep fgrep
grep global search regular expression=\‘#\‘" ) and print out the line
文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式匹配到的行
grep [options] ‘pattern‘ file......
--color=auto
正则表达式:是一类字符所书写出的模式(pattern)
元字符:不表示字符本身的意义,用于额外功能性的描述
基本正则表达式
grep -E 使用扩展正则表达式
字符匹配
。:任意单个字符
[]:指定范围内的任意单个字符
[^]:指定范围外的任意单个字符
次数匹配:用来指定匹配其前面的字符的次数
*:任意次
例子:x*y,xxy,xy,y
.*:匹配任意长度的任意字符
\?:0次或1次
x\?y,xy ,y,xxy
贪婪模式:尽可能的长的去匹配字符
\{m\}:匹配m次
\{m,n\}:m次到n次
\{m,\}:至少m次
\{0,n\}:至多n次
位置锚定:用于指定字符出现的位置
^:锚定行首
^Char
cgrep ‘^[Tt][^[:punct:]].*[Rr]‘ passwd
$锚定行尾
Char$
cgrep ‘bash$‘ passwd
^$:空白行
查找空行 cgrep ‘^$‘ profile
^hello$=hello
\<char:锚定词首,\bchar
cgrep ‘<\[Tt][^[:punct:]].*[Rr]‘ passwd
char\>:锚定词尾 char\b
\<a.bbb\>
分组:\(\)
\(ab\)*xy
引用:
\1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式所匹配的内容
\2
\(a.b\)xy\1 a6bxya6b
cgrep ‘[Tt].*[Rr]‘ passwd
cgrep ‘[Tt][^[:punct:]].*[Rr]‘ passwd
grep 常用选项
-v 反向匹配 不显示空行 grep -v "^$" profile
-o 仅显示匹配到的字符串,不是整行
-i 不区分字符大小写
-E 支持扩展的正则表达式
-A #:after 匹配到行和下#行
-B #: before 匹配到行和上#行
-C #: context上下文 匹配到行和上下#行
原文:http://onlywyn.blog.51cto.com/204565/1362192