正则表达式和grep
??????????????正则表达式和grep
??正则表达式(Regular Expression)是对字符串和特殊字符操作的一种逻辑公式,通过结合工具实现对文本的检索、替换目标字符。 一.起源??美国新泽西州的Warren McCulloch和Walter Pitts 这两位生理方面的科学家,研究出了一种用数学方法来描述神经网络的新方法,他们将神经系统中的神经元描述成一个个小而简单的自动控制单元。随后,一名叫Stephen Kleene的数学家在他们的研究基础上提出了用正则集合的数学符号来描述模型的方法,从此就有了“正则表达式”这个术语。随后大名鼎鼎的Unix之父Ken Thomspon就把这一成果应用于计算搜索算法的一些早起研究,并把它引入QED编辑器中。从此,正则表达式在计算机领域得到了广泛的应用。现在所有的主流操作系统(Linux、Windows等)和主流的编程语(Shell、Java、Python等)言都有相应的正则表达式引擎。 二.grep??在Linux系统中,grep(Global search REgular expression and Print out the line)是一款文本过滤工具。根据用户指定的正则表达式对目标文本进行逐行匹配和检查,并把符合条件的行打印出来。其中又可以分为:grep、egrap和fgrep,egrap支持扩展的正则表达式,fgrep则不支持正则表达式。 三.基本正则表达式元字符??正则表达式的元字符根据其功能可分为四种:字符匹配、匹配次数、位置锚定和分组。 1.字符匹配字符匹配项的字符都不表示字符意义,而表示控制或通配的功能。
2.匹配次数用在指定次数的字符后面,用于指定前面的字符要出现的次数。
3.位置锚定符用于指定字符匹配的位置
4.分组用小括号把多个独立的字符捆绑在一起,当作一个整体一起处理。 例如:(root)+ 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部变量中,这些变量的命名方式为:1,2,3,…… 例如:(string1+(string2)*) 则1 : string1+(string2)* 2 : string2 后项引用时引用的是前面的表达式匹配得到的结果,而非匹配模式本身。 四.grep选项grep [optinons] pattern [file] --color=auto:对匹配的文本着色显示 -v:显示不被匹配到的行 -i:忽略大小写 -n:显示匹配的行数 -c:统计匹配的行数 -o:仅显示匹配到的字符串 -q:静默模式,不输出任何信息 -A #:显示匹配到的行的后#行 -B #:显示匹配到的行的后#行 -C #:显示匹配到的行的前后#行 -e:实现多个选项间的逻辑或(or)关系 -w:匹配整个单词 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |