星号(*)元字符表示它前面的正則表達式能够出现零次或多次。也就是说,假设它改动了单个字符。那么该字符能够在那里也能够不在那里,而且假设它在那里,那可能会不止出现一个。能够使用星号元字符匹配出如今引號中的单词。

□"*hypertext"*□

无论单词"hypertext"是否出如今引號中都会被匹配。

并且,假设由星号修饰的字符确实存在。那么有可能出现多次。

比如,我们来看一系列数字:

1

5

10

50

100

500

1000

5000

正則表達式[15]0*将匹配全部的行,并且则表达式[15]00*匹配除前两行以外的全部的行。

第一个0是字面值,可是第二个由星号修饰,意味着它可能出现也可能不出现。

经常使用类似的方法匹配一个或多个(而不是0个或多个)空格,能够使用以下的表达式来完毕:

□□*

当星号元字符前面有句点元字符时,匹配随意数目的字符。

这可用于标识两个固定的字符串之间的字符的跨度。假设想要匹配引號中的随意字符串,能够指定:

".*"

它匹配该行上的第一个引號和最后一个引號之间的全部字符以及引號。使用".*"进行匹配的范围总是最大的。

眼下它似乎并不重要,可是一旦学习替换被匹配的字符串时这就非常重要了。

作为还有一个样例,一对尖括号标记语言中用来包围格式化指令的普通符号,标记语言如HTML。通过指定以下的表达式能够打印带有标记的全部的行:

$ grep ' <.*>' sample

当星号用于修饰字符类时,则能够匹配类中的随意数目的字符。

比如以下5行的演示样例文件:

I can do it

I cannot do it

I can not do it

I can' t do it

I cant do it

假设我们想要匹配以上语句中的否定语句,但不匹配肯定语句,能够使用以下的正則表達式:

can[ no' ]*t

星号使得类中的随意字符以随意顺序匹配,而且匹配随意多次的出现。例如以下所看到的:

$ grep "can[ no' ]*t" sample

I cannot do it

I can not do it

I can' t do it

I cant do it

有4个成功和1个失败(肯定语句)。注意假设正則表達式试图匹配字符串"can"和"t"之间的随意个字符,例如以下例所看到的:

can.*t

它将匹配全部的行。

技术术语"closure (闭合)"有匹配"零次或多次"的能力。egrep和awk使用的元字符扩展集提供了几个很实用的closure 的变化。加号(+)匹配前面的正則表達式的一次或多次出现。前面匹配一个或多个空格的演示样例能够简化为:

□+

元字符加号能够被觉得是"至少一个"的前导字符。其实,它和很多人使用的"*"号相相应。

问号(?)匹配零次或一次出现。比如,在前面的演示样例中,我们使用正則表達式匹配"80286" 、"80386" 和" 80486" 。

假设我们还想匹配字符串"8086" ,能够用egrep 或awk编写正則表達式:

80[234]?

86

它匹配"80"后面跟有一个2 ,一个3 ,一个4,或者没有字符,然后跟字符串"86"。不要混淆表达式中的?和shell中的?

通配符。Shell 中的?表示单个字符。等效于正則表達式中的"."

參考资料:http://www.linuxawk.com/communication/436.html

Linux正則表達式-反复出现的字符的更多相关文章

  1. Linux正則表達式-定位元字符

    有两个元字符用于指定字符串出如今行首或行末.脱字符(^)是指示開始的单字符正則表達式.美元符号($)是指示行结尾的单字符的正則表達式.这些通常称为"定位符",由于它们将匹配限定在特 ...

  2. linux系统之shell编程-正則表達式

    shell编程正則表達式: 1:元字符   [ ]  .   *  ? + ( )  |  {  }  ^  $ 2 : [a-z0-9]  表示匹配随意数字和字母的一个 3 :  [^a-z]    ...

  3. Python正則表達式:怎样使用正則表達式

    正則表達式(简称RE)本质上能够看作一个小的.高度专业化的编程语言,在Python中能够通过re模块使用它.使用正則表達式,你须要为想要匹配的字符串集合指定一套规则,字符串集合能够包括英文句子.e-m ...

  4. javascript正則表達式

    定义一个正則表達式 能够用字面量 var regex = /xyz/; var regex = /xyz/i; 也能够用构造函数 var regex = new RegExp('xyz'); var ...

  5. Java正則表達式入门

     众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...

  6. JAVA中正則表達式总结

    昨天,我的朋友请教我正則表達式.我也好久没有写过正則表達式了,昨天刚好看了下如鹏网创始人杨中科老师关于正則表達式的解说.使我加深了正則表達式的印像.现我把他总结下: 很多语言,包含Perl.PHP.P ...

  7. 经常使用的正則表達式归纳—JavaScript正則表達式

    来源:http://www.ido321.com/856.html 1.正则优先级 首先看一下正則表達式的优先级,下表从最高优先级到最低优先级列出各种正則表達式操作符的优先权顺序: 2.经常使用的正則 ...

  8. Java之正則表達式【使用语法】

    认为好就顶一个!! ! ! 3.正則表達式 用一些特殊的有意义的字符组成的字符串(死记) 原子:正則表達式的最基本组成单位 正則表達式特殊意义的字符:   .  *  +  ?不能单独表示它们,假设非 ...

  9. python之路-------字符串与正則表達式

    1.1.#####去掉字符串中的转义符string.strip() print "hello\tworld\n" >>> word="\thello w ...

随机推荐

  1. [Angular 2] Using events and refs

    This lesson shows you how set listen for click events using the (click) syntax. It also covers getti ...

  2. Eclipse 将projectBuild Path中引用的jar包自己主动复制到WEB-INF下的lib目录下

    在用用 Eclipse进行Java Web开发时,web应用中引用的jar须要复制到WEB-INF下的lib目录下,否则常常出现ClassNotFound异常. 通过以下方法,能够不用手动拷贝jar包 ...

  3. 完善GDAL与OpenCV间的数据格式转换与影像分块读写

    本博客为原创内容,未经博主允许禁止转载,商用,谢谢. 一.前言 关于GDAL与openCV间的数据格式转换,在我之前的博客中已有简要说明,这里,由于最近工作上经常用到openCV里的函数进行图像处理, ...

  4. 虚拟现实,增强现实,VR,AR

    现在的热点不止VR,还有AR和披着MR.HR.CR外衣的各种高级AR们,所以比较着一起说.以下知乎上一网友观点,放几条结论:1.近期(未来两三年)看,VR能火,AR尚待成熟: 2.VR设备中,插片式是 ...

  5. (转)Windows Server 2008 默认"照片库查看器" 无法打开图片, 只能用画图程序打开

    1.解决[启用Win2008照片查看器] Win2008 中放了一些图片,本来以为可以象Win7那样直接用“照片查看器”打开,可是Win2008默认竟然是用“画图”打开的,非常不方便. 再仔细一看,“ ...

  6. JS传递参数时对中文进行编码和解码

    var b ="啊,我要过去";                            var a = encodeURI(b);//对中文编码                   ...

  7. 《第一行代码》学习笔记10-活动Activity(8)

    1.除了onRestart()方法,其他都是两两相对的.三种生存期: (1)完整生存期:onCreate()~onDestroy().一般情况下,一个活动会在onCreate()中完成各种初始化操作, ...

  8. iOS的属性声明:retain和strong的区别

    声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在声明Block时,使用strong和retain会有截然不同的效果.strong会等于copy,而r ...

  9. 慕课linux学习笔记(七)常用命令(4)

    帮助命令 Man命令 Man的级别 命令帮助 可被内核调用的函数帮助 函数和函数库帮助 特殊文件帮助 /dev 配置文件帮助 游戏的帮助 其他杂项的帮助 管理员可用命令帮助 内核相关文件的帮助 -f ...

  10. ubuntu 下搭建一个python3的虚拟环境(用于django配合postgresql数据库开发)

     #安装python pip  (在物理环境中安装) sudo apt-get install python-pip       sudo apt-get install python3-pipsud ...