文档章节

016.科普.正则表达式及文本编辑

攻城狮朋友圈
 攻城狮朋友圈
发布于 2015/06/13 14:11
字数 908
阅读 17
收藏 0

原文:http://www.moilioncircle.com/release/016.know.regexp-grep-sed.html

016.科普.正则表达式及文本编辑

不等不靠,有囧有料。终日乾乾,或跃在渊。

正则表达式(RegExp),是攻城狮标配技能,
本期视频,让各位狮友40分钟从精通到入门 :)

@史荣久 / 2015-05-27 / CC-BY-SA-3.0

观看视频

内容摘要

■ 文本加工的例子(验证,提取,替换,分割):

  • 12个月(1[012]|[1-9]),千分位数\d{1,3}(,\d{3})*
  • CSV文件(标准格式)的域([^",]+|"(?:[^"]|"")+")
  • 只正则,根据SQL生成JavaBean,带注释和注解。
  • 不编码,统计spring-framework源码,达到以下目标:
  • 一共有多少个开发者(distinct @author)?
  • 每个开发者参与了多少行代码(粗略,有author就算)?

■ 正则表达式精要(基本上NFA各流派都适用):

  • 两大流派:PCRE(Perl兼容),Posix(BRE和ERE)。
  • 12+元字符^$?+*.\{[(|),2+特殊字符\^+[-]
  • 2种选择结构:字符串(X|Y|Z),字符[xyz]及否定[^xyz]
  • 字符串多选结构的否定式,需要用环视(零宽断言)(?!X|Y|Z)
  • 常用的字符组dwsb,\p{punct},块转义\Q\E(QuotE)。
  • 捕获组,反向引用,贪婪,非贪婪,量词,边界等。
  • .不能匹配换行符,小技巧[\s\S]*[\d\D]*
  • CRLF:[\r\n]+,\r?\n (记忆:return,n-r:a-d)。
  • java的String.replaceAll,split要注意转义。
  • java的replace时候,要注意替换字符串中的$
  • java的\1$1\k<name>${name}的用法。。
  • java的命名组,反向引用,超过9个引用时。

■ 文本加工的命令(Unix哲学,组合,精专):

  • 最牛的linux命令alias cd='rm -rf',玩笑加姿势。
  • 本期命令:grep,find,xargs,sed,uniq,wc
  • ag 超快的文本搜索命令,在700M代码用表达式不到3秒。
  • linux下,各种转义的规律(ERE,双引号,单引号)。
  • MS Window移植:CygwinGnuWin32unxutils

参考资源

■ 正则参考资料(括号内,为推荐程度):

■ 命令参考资料(应该记住,或者经常man):

■ 其他参考资料(Win32移植很犀利,RFC不是KFC):

欢迎围观

if (you.accept(MoilionCircle.SPIRIT)) {
    if(you.haveADL()){
        MoilionCircle we = you.search(MoilionCircle.SLOGAN);
        we.welcome(you);
    }
    if(you.share(this)){
        We.thank(you);
        We.mayFind7Moilion();
    }
}

我的收获

是时候显摆一下,每期视频,我的个人收获了。

速读了《精通正则表达式 (第3版)》和正则表达式经典实例》,
比较系统的了解了Regexp,原理和如何写出高性能的Regexp。
同时一直不太清楚的环视,贪婪,占有,也一并彻底吃透。

此外,更新了CSV标准定义,和bash转义中单双引号。
还有posfix的BRE和ERE的区别,之前老搞不清楚,主要靠试。

关于正则就说这么些吧。

© 著作权归作者所有

共有 人打赏支持
攻城狮朋友圈

攻城狮朋友圈

粉丝 5
博文 14
码字总数 2885
作品 1
大连
程序员
私信 提问
linux下grep、awk和sed工具用法概览

linux下grep、awk和sed工具用法概览 在linux下,grep、awk和sed是非常强大的文本处理工具,其中grep命令主要用作文本搜索,而awk和sed命令侧重于文本的编辑等操作,另外awk本身还可以是编程语...

小陶小陶
09/11
0
0
2017-12-9Linux基础知识(16)文本处理工具

我们简述一下上一章的内容,主要讲的是bash编程的基础,介绍了其编程类型,以及介绍了编程语言的类型什么是过程式编程和对象式编程,然后我们编写了第一个脚本程序以及如何运行的方式有那些,...

刘祥宇
2017/12/11
0
0
TextKit(图片混排)

一、TextKit 探究 1.1 TextKit的概述 在iOS7中,苹果引入了Text Kit——Text Kit是一个快速而又现代化的文字排版和渲染引擎。Text Kit在UIKit framework中的定义了一些类和相关协议,它最主要...

从訫开始_倾深爱
2016/09/23
36
0
JMeter正则表达式

正则表达式被用来检索、替换那些符合某个模式(规则)的文本。JMeter正则表达式或模式运用于JMeter测试计划中。 当我们创建测试计划时,使用正则表达式可以节省大量的时间并获得更大的灵活性。...

地空神一
2017/12/23
0
0
Notepad++删除空行的多种实现办法

Notepad++支持基础的正则表达式,同时由于自身丰富的插件和功能,所以删除空行或有空格的空行,有多种实现办法,条条大路通罗马,闪电博客抛砖引玉,供大家参考。 一、删除空行(不包括有空格...

未来星狒狒
2015/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安秒平衡

相关介绍 电容两端的电压不能突变。 一般用在平衡条件下的开关电路中。 流经电容的电流平均值在一个开关周期内为零。 定义 安秒平衡原则:在稳态工作的开关电源中电容两端的正安秒值等于负安...

colinux
今天
2
0
Apache日志不记录访问静态文件,访问日志切割,静态元素过期时间设置

Apache配置不记录访问静态文件的日志 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 vhost原始配置 <VirtualHost *:80> ServerAdmin test@163.com DocumentRoo...

野雪球
今天
3
0
聊聊storm的ICommitterTridentSpout

序 本文主要研究一下storm的ICommitterTridentSpout ICommitterTridentSpout storm-core-1.2.2-sources.jar!/org/apache/storm/trident/spout/ICommitterTridentSpout.java public interface......

go4it
今天
4
0
Ubuntu常用操作

查看端口号 netstat -anp |grep 端口号 查看已使用端口情况 netstat -nultp(此处不用加端口号) netstat -anp |grep 82查看82端口的使用情况 查找被占用的端口: netstat -tln netstat -tl...

hc321
昨天
3
0
网站cdn的静态资源突然访问变的缓慢,问题排查流程

1.首先我查看了一下是否自己的网络问题,通过对比其他资源的访问速度和下载速度,确认不是 2.通过ping 和 tracert 判断cdn域名能否正常访问,(最后回想感觉这一步可以省略,因为每次最终能访...

小海bug
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部