Regex

应用示例,查重复单词:
  1. 查多个文件,挑出包含重复单词的行,高亮标记,能知道来自哪行
  2. 可跨行查找
  3. 可不区分大小写,可间隔任意数量的各种空格
  4. 可查找被html tag分隔的重复单词 如 <b>very</b> very

egrep/sed

示例:
  1. ^(Subject|From):      以From:或者Subject:开头的行
  2. ip地址改字体  s!<H1>([0-9]+(\.[0-9]+){3})!<H2>$1</H2>!
  3. <H[123456]>匹配<H1><H2>等
  4. 匹配引号最简单的例子 "[^"]*"(不能处理中间存在转移引号的情况)
  5. 想用<.*>来匹配html中的tag是危险的,也会匹配到<I>shott</I>
  6. 时间如 9:17 am,[0-9]?[0-9]:[0-9][0-9] (am|pm)是不对的,应该是(1[012]|[0-9]):[0-5][0-9] (am|pm)
  7. 24小时制: ([01][0-9])|2[0-3]



Egrep元字符:
  1. 行的起始和结尾:^和$
    • 形成习惯,不要认为^Cat匹配的是以Cat开头的行,而是Cat,只不过这个Cat位于行的开头。不是行,是单词。
  2. 字符组[]:
    • 只有在[]内部,"-"才是元字符,如0-9,在外部,是普通字符。并且"-"放在开始时,是普通字符,如[-/.],在[0-9]是元字符。
    • 字符组内部,"."是普通字符,在外部匹配任意字符
    • 字符组内部,^表示非,在外部表示行的开始
    • 注意:字符组必须匹配一个字符,即使是[^u]也必须匹配一个字符,只不过这个字符不是u。所以,如果Iraq后面的字符被截取掉了,q[^u]不会匹配;但如果Iraq后面有空格等,仍可匹配。
  3. 点号“.":匹配任何字符。
  4. 多选结构"|":
    • Jeffery|Jeffrey  等同于 Jeff(ery|rey)、Jeff(er|re)y
  5. 忽略大小写: 
    • egrep命令行参数 egrep -i '^(From|Subject):' mailbox
  6. 单词分界符
    • \<和\>。单词的开始和结束。
    • 注意:实际上匹配的是位置
  7. 可选项元素"?"
  8. 其他量词:  + *
  9. 括号及反向引用:
    • egrep -i '\<([a-z]+) +\1\>' files  
    • 因为-i了所以无需[a-zA-Z]
    • 两边加上\<和\>,中间的空格用+而不是*,相当于保障两个部分是独立的单词,不是其他单词的一部分

写正则表达式,需要在对欲检索文本的了解程度与检索精确性之间求得平衡。


Perl与egrep不属于一个正则流派

Per简单入门
  1. 变量以$开头,$a = 30;  $b = $a * 5,可以保存一个数值或任意长度文本
  2. #作为注释
  3. 变量可以出现在双引号中,比如"一共$a元"
  4. 执行命令 % perl -w hellowworld.   类似于java
  5. if( $reply =~ m/^[0-9]+$/ ),其中=~ 是匹配运算符。(=是赋值、==是判断)
  6. $value = <STDIN> #从用户处接受一个输入
  7. chomp($value) 去掉$value后面的换行符

$1$2$3,从最左边的括号开始匹配。
[ \t]*和( *|\t*)的区别,后者不允许匹配空格和制表符的混合体。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值