【250期门诊集锦】痛并快乐着的正则表达式
本期特邀华南某电商公司技术总监余晟老师,针对正则表达式问题给予解答,欢迎网友积极提问,与专家一起讨论!
专家著作:《正则指引》《精通正则表达式》
查看本期门诊精彩实录:http://doctor.51cto.com/develop-264.html
参与最新技术门诊:Ext JS 4的华丽转身
精选本期网友提问与专家解答,以供网友学习参考。
Q:
余老师您好:
在学习正则表达式的时候,我经常分不清哪一些是 shell中匹配符的用法,因为在正则和匹配符
像 * ^这些俩边都用的。想问一下老师,关于这俩个概念的明确定义是啥?那些时候用到匹配符,那些
时候我用的肯定是正则!
谢谢!
A:
^在Shell中没有特定含义,在正则中指的是一行文本的起始位置;
*在正则表达式中是一个量词,表示之前元素可以不出现,也可以出现任意多次;在Shell中它表示通配
符,表示任意长度的任意文本
Q:
正则表达式,在各个语言中好像稍有不同啊,shell perl python Tcl ,我是常用这四种,每次遇到不
同,看百度,看的头疼,不知道老师有没有总结文档,或者重点的区别在哪?
A:
你好,这个问题的解法在于先弄明白语言中立的概念,然后再了解各个语言具体的规定(比如转义,比
如支持的功能)。具体你可以参考《正则指引》,或者也可以参考http://www.regular-
expressions.info/
Q:
对正则表达式没啥研究,之前做一些文档查询功能的的时候针对文档内容关键字匹配的查询总是不怎么
理想,如果文档内容少点查询效率就还好,如果是查过5M的文档,速度就很慢,特别使用一些通配符的
时候,搜索结果很不理想,不知道对于文本搜索这一块,正则表达式是不是有什么作用?如果要深入学
习正则表达式,从哪些方面入手会比较容易?
A:
可以参考这篇文章:http://www.luanxiang.org/blog/archives/1308.html
在查找大文本的时候,如果使用得当效率是没有影响的,我尝试过处理超过1G的日志文件,2分钟之内可
以完成
Q:
余晟老师您好:我是一名从事娱乐应用软件开发的策划师,本人并非程序员,只是应用程序员封装好的
变量来编写正则表达式,除了数学运算外逻辑运算很少用到,很想提高逻辑运算方面的表达式编写能力
,这样在向程序员提出相关需求时会更有针对性,谢谢
A:
如果是需要锻炼逻辑,可以专门学习数理逻辑或者离散数学。数理逻辑相比通常所说的“逻辑”,更加
严格,更加形式化,难度并不高。
Q:
余老师您好!
在工作中我不用这个,学这个完全是个人兴趣,我会在有空的时候就做一些小工具,来玩儿(主要是用来
分析网页).
因为没有系统的看过这方面的讲解,或者说是书籍吧,主要是看的很流行的一篇叫《正则表达式30分钟入
门教程》的文章,
感觉讲的已经可以了,毕竟这样已经能够完成自己的大部分需求,
在这里主要是想请教一下,
1:为什么正则表达式会效率会比较高?
2:正则用的最多的地方是?
3:对于正则表达式您会推荐的书籍是?
A:
你好。
你的问题都比较大,限于篇幅难以展开,这里简单回答:
1)在进行字符串的模式匹配时,正则表达式的效率很高,因为它背后的原理是自动机。在复杂操作(比
如查找一个email地址,验证一个url地址)时,比单纯的字符串操作函数要高很多。
2)用的多的地方有好几个:数据验证、数据提取、数据修改(替换);
3)我推荐的书籍有《正则指引》和《精通正则表达式》。
Q:
余老师您好!
我做web开发比较多,所以正则表达式用的最多的地方就是js里做表单验证,这些还应付的来,
可许多时候有些问题我没用正则表达式,别的方法同样可以实现,但项目经理就偏要用正则,说灵活性
好等,但这种根据别人的要求来写正则真是有点头疼,所以望老师指点迷津。
A:
你好。
我认为不一定需要使用正则表达式的,只要能完成功能,什么办法都可以。《正则指引》里专门有内容
讲什么时候不应该使用正则表达式。
Q:
余老师:
你好,我最近在学习shell编程,正则表达式与shell之间有关联吗?
因为看shell方面的书籍,正则表达式是单独用一章节来介绍的。
在学习正则表达式方面,有什么快速掌握的窍门?
例如正则表达式当中sed工具的使用,sed -i 's/doc/boc/roo/boo/g' rrr.txt 这一例子,是想将
rrr.txt文本当中的/doc/boc/替换成roo/boo/,我上面的写法肯定不对,需要加反引号,可是我不知道
反引号要怎么加在上例?才能替换成功?
还有反引号主要用在哪些场合呢?能否举几个实例?
A:
Linux/Unix下的Shell会大量用到正则表达式。
学习正则表达式没有什么快速入门的诀窍,关键还是学习一些基础概念和元素的用法,多练习。
你说的sed的问题与反引号无关,因为在sed的命令中,斜线/是作为分隔符(delimeter)来使用的,在
sed /old/new/ 这样的语法规范中,/用来分隔需要替换的参数和要替换成的参数。如果要在参数中使用
/,则应当转义为\/,也就是sed -i 's/doc\/boc/roo\/boo/g' rrr.txt
转载于:https://blog.51cto.com/doctor/926957
【250期门诊集锦】痛并快乐着的正则表达式相关推荐
- 【269期门诊集锦】iOS游戏开发—2D游戏编程之我见
技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问.从热门技术到前沿知识,从技术答疑到职业规划.每期一个主题,站在最新最热的技术前沿为你引航! 本期门诊特邀iOS游戏开发专 ...
- 【234期门诊集锦】全面了解 VMware View 5 虚拟桌面
技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问.从热门技术到前沿知识,从技术答疑到职业规划.每期一个主题,站在最新最热的技术前沿为你引航! 本期特邀 河北经贸大学信息技 ...
- 【241期门诊集锦】正确高效的Android应用程序开发
技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问.从热门技术到前沿知识,从技术答疑到职业规划.每期一个主题,站在最新最热的技术前沿为你引航! 本期特邀<Androi ...
- 倪光南、求伯君“出山”:爱解 Bug、无惧“35岁魔咒”、编码之路痛并快乐!
作者 | 郑丽媛 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 互联网是有记忆的. 从混沌初开到万物互联,从「程序英雄」到「平台诸侯」,中国计算机到互联网的发展历经 60 个春秋,整个 ...
- 成长的故事――痛且快乐的
成长的故事――痛且快乐的 Drate 写于2005/9/5 我是2001年从一所中专学校毕业的,而在我毕业之前,那时就知道了CSDN,我在CDSN的账号Drate应该是在99年前后注册的吧,那时上 ...
- 成长的路上,痛并快乐着
异地求学七年,从地图的的西北部跨越到地图的南部.一路行走着,一路成长着,有痛,有快乐.或许,痛并快乐着也是一种生活的姿态.或许,有过痛的青春才深刻,而深刻的背后即是思考.理解.包容与成熟.可有时候,宁 ...
- 码农晋升为技术管理者后,痛并快乐着的纠结内心
有一个非常有趣的现象:据说大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到管理岗位上的,并非是自己当初有强烈意愿.主动去选择管理岗的.这种被动的比例还不低,高达 ...
- 图解UCWEB创业故事 痛并快乐着
图解UCWEB创业故事 痛并快乐着 浏览次数: 17次 2008年11月03日 雷军新浪博客 字号: 大 中 小 分享到: QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 开心网 更多 0 上周六,看了 ...
- 【答题卡识别】Hough变换答题卡识别【含Matlab源码 250期】
⛄一.获取代码方式 获取代码方式Q: 完整代码已上传我的资源:[答题卡识别]基于matlab Hough变换答题卡识别[含Matlab源码 250期] 获取代码方式2: 付费专栏图像处理(Matlab ...
最新文章
- Go 源码里的这些 //go: 指令,go:linkname 你知道吗?
- 【 FPGA 】时序分析中的基本概念和术语
- IDEA中进行SpringBoot整合spring-ws开发webservice接口后期要修改xsd文件流程
- 5分钟看懂微服务架构下的Consul 特性及搭建
- pit和systick_PIT和TestNG突变测试简介
- systemd.generator — systemd unit generators
- DataGridView:根据条件改变单元格的颜色
- 大数据时代投资者应如何利用数据资源盈利
- codejock toolkit pro 源码零售版
- 在二维码中间添加logo或者图片
- 图片公式转word公式
- 怎样获取网页视频下载链接
- window10使用bat脚本配置ip和dns
- JSD-2204-API-线程并发-集合-Day08
- 【车牌识别】模板匹配车牌库识别【含GUI Matlab源码 416期】
- GMAP一款比对工具用于ALLHiC构建等位基因表
- 四个免费,无法律风险的高质量国外图片网站推荐
- 1.Azure虚拟机部署
- OS课设:实现二级文件目录系统
- Composer的实用部分
热门文章
- 2019届[月考01-03]高三理科数学试题参考答案
- PHP版本李白打酒算法
- TLS 协议所定义的严重错误代码是 10。Windows SChannel 错误状态是 1203
- 【mysql】全文索引match多列报错
- ubuntu15.04安装wps-office的64位版
- 小米 Git(在线笔试)
- 虚拟网络VDC与VPC
- 2019.03.25 bzoj4539: [Hnoi2016]树(主席树+倍增)
- 「SCOI2015」小凸想跑步 解题报告
- Robot Framework 自动化框架大纲