Linux正则表达式-表达式

你可能熟悉一个计算器解释的表达式。请看下面的算术表达式:

2+4

"2加4" 出几个常数或字面值和一个操作符组成。计算器程序必须能够识别,例如, "2" 是数字常数而加号表示一个操作符,而不能解释为"+"字符。

表达式告诉计算机如何产生结果。尽管我们真正想要的就是"2+4"的结果,但我们不能简单地告诉计算机返回6。我们指示计算机计算表达式并返回值。表达式可以比"2+4"更复杂,事实上,它由多个简单的表达式组成,例如:

2+3*4

计算器通常从左到右计算表达式。然而,某些操作符比其他操作符的优先级高,也就是,它们将被首先执行。因此,上面的表达式的结果为14 而不是20 ,因为乘法的优先级高于加法。将简单的表达式放入圆括号中可以改变优先级,因此"(2+3)*4" 或"2加3的和的4倍"的结果为20。因括号是指示计算器改变表达式计算顺序的符号。

相反,一个正则表达式描述了一种模式或字符序列。字符串连接是每个正则表达式的基本操作。也就是一个模式匹配相邻的一系列字符。请看下面的正则表达式:

ABE

每个字面字符都是一个正则表达式,它只匹配那个单独的字符。这个表达式描述了"B跟着A, E跟着B" 或简单称为"字符串ABE" 。术语"字符串"意味着每个字符都与它前面的字符相连接。不一定要将正则表达式描述为由字符序列组成(初学者倾向于将其考虑成由较高级的单元组成,例如由单词而不是独立的字符组成)。正则表达式区分大小写,因此"A"不匹配"a"。

接受正则表达式的程序(例如grep) 必须首先解析正则表达式的语法来产生一个模式。然后它们一行一行地读取输入未尝试匹配该模式。输入行是一个字符串、而且要看字符串与模式是否匹配,程序将字符串的第一个字符与模式的第一个字符进行比较。如果匹配,就比较第二个字符。无论何时只要匹配失败,就返回并从字符串中这个字符后面的字符重新开始匹配。

正则表达式不只限于文字字符。例如,元字符句点(.)可以作为"通配符"匹配任何单个字符。你可以认为这个通配符与Scrabble 中的空白类似,可以表示任意字母。因此,我们可以指定正则表达式"A.E" 而且它将和"ACE" 、"ABE" 和"ALE" 都匹配。句点与"A"后面的位置上的任何字符匹配。

元字符* (星号)用于与它前面的正则表达式的零个或多个出现匹配,该表达式通常是一个字符。你也许对*作为一个shell元字符更熟习,在那里它表示"零或多个字符"。但是这与它在正则表达式中的含义不同。星号元字符本身不匹配任何字符、它用于修改它前面的内容。正则表达式*匹配任意数目的字符,而在she11中,*本身就具有这种含义(例如,在shell中, ls*表示列出当前目录中的所有的文件)。正则表达式"A.*E"匹配任何与"A.E"匹配的字符串,但是它还匹配在"A"和"E"之间具有任意数目的字符;例如,"A|RPLANE"、"A
FINE" 、" AFF ABLE" 或"A LONG WAY HOME"。注意"任意数目的字符"可以是零个字符!

参考资料:http://www.linuxawk.com/communication/387.html

时间: 2024-08-24 17:10:48

Linux正则表达式-表达式的相关文章

Linux正则表达式grep与egrep

Linux正则表达式grep与egrep 正则表达式:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在很多文本编辑器或其他工具里,正则表达式通常被用来检索或替换那些符合某个模式的文本内容.其实正则表达式,只是一种思想,一种表示方法.只要我们使用的工具支持表示这种思想那么这个工具就可以处理正则表达式的字符串.常用的工具有grep, sed, awk,这三个都是针对文本的行才操作的. grep  过滤器语法: grep  [-cinvABC]  'word'  filenam

  linux正则表达式解析

Linux 正则表达式解析 一.Linux文本搜索工具 Linux的文本搜索工具主要有grep,egrep,fgrep.其中grep支持基本和扩展的正则表达式的搜索.egrep支持扩展的正则表达式.fgrep不支持正则表达式的搜索,但是它的搜索速度比较快.这里我们具体探讨一下grep和egrep使用方法. 1.1grep用法 grep [OPTIONS] PATTERN [FILE...] --color={never,auto,always}:是否对搜索到字符串做颜色处理. -o :只显示被模

关于清晰讲解linux正则表达式的博文分享

http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html  linux shell 正则表达式(BREs,EREs,PREs)差异比较 http://www.360doc.com/content/11/0304/11/5912935_98007617.shtml  正则表达式练习 http://www.jb51.net/article/42989.htm  Linux 正则表达式详解 http://www.sjhf.net/bl

linux正则表达式的使用

正则表达式的使用 1.1 创建环境 cat >q.txt<<EOF oldboy  oldboy hellooldboy hellooldboy awkoldboy  awkoldboy sedoldboy sedoldboy oldboyedu oldboyedu EOF 取出只有oldboy的行 grep "\boldboy\b" q.txt 实例1-1反向引用 [[email protected]~]# #####第一个里程碑-反向引用(先保护起来,然后使用)

Linux 正则表达式

Linux 正则表达式(*****) 1.什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串. Linux 正则表达式一般以行为单位处理的. 注意事项: a.#alias grep='grep --color=auto'  ===>以特定颜色高亮显示匹配关键字 b.注意字符集,LC_ALL=C   #export LC_ALL=C 实战举例: 1)^ word  搜索以 word 开

菜鸟的成长记录--linux正则表达式及grep

正则表达式 是一类字符所书写的模式,其中许多字符不表示其字面意义,而是表达控制或通配等功能:正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 元字符:不表示其字面意义,而用于额外功能性描述,下面是常用的元字符列表 符号 含义 . 表示匹配任意单个字符,例a.,匹配ab.ac.ad.ax * 表示它前面的字符可以出现任意次,例a*b,匹配aab.b.ab \? 表示它前面的字符可有可无,例a\?b,匹配a

linux正则表达式之-基础正则表达式(基于grep)

linux正则表达式: 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,如:假设@代表123456,!代表abcde.通过定义的这些特殊符号的铺助,系统管理员就可以快速的过滤,替换或输出需要的字符. 使用正则表达式注意事项: 1.linux正则一般是以行为单位处理的. 2.alias grep='grep --color=auto',讲课是以grep为例.(注意:为了使下面的案例更加清晰明了,在做下面的案例前请先执行此行命令) 3.注意字符集,LC_ALL=C linux里正则

NO22 Linux正则表达式

Linux正则表达式: 原文地址:https://www.cnblogs.com/sinsenliu/p/9029383.html

Linux正则表达式结合三剑客实例

Linux正则表达式结合三剑客实例 案例一:取 ifconfig eth0 中的 inet addr 的 ip法一:ifconfig eth0|sed -n '2p'|sed -n 's#^.dr:##gp'|sed -n 's# B.$##gp'法二:ifconfig eth0|sed -n'2s#^.dr:##gp'|sed -n 's# B.$##gp'法三(后向引用):ifconfig eth0|sed -nr '2s#^.dr:(.) B.*$#\1#gp'练习法三:需要注意 sed: