技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在最新最热的技术前沿为你引航!

本期特邀华南某电商公司技术总监余晟老师,针对正则表达式问题给予解答,欢迎网友积极提问,与专家一起讨论!

专家著作:《正则指引》《精通正则表达式》

查看本期门诊精彩实录: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期门诊集锦】痛并快乐着的正则表达式相关推荐

  1. 【269期门诊集锦】iOS游戏开发—2D游戏编程之我见

    技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问.从热门技术到前沿知识,从技术答疑到职业规划.每期一个主题,站在最新最热的技术前沿为你引航! 本期门诊特邀iOS游戏开发专 ...

  2. 【234期门诊集锦】全面了解 VMware View 5 虚拟桌面

    技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问.从热门技术到前沿知识,从技术答疑到职业规划.每期一个主题,站在最新最热的技术前沿为你引航! 本期特邀 河北经贸大学信息技 ...

  3. 【241期门诊集锦】正确高效的Android应用程序开发

    技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问.从热门技术到前沿知识,从技术答疑到职业规划.每期一个主题,站在最新最热的技术前沿为你引航! 本期特邀<Androi ...

  4. 倪光南、求伯君“出山”:爱解 Bug、无惧“35岁魔咒”、编码之路痛并快乐!

    作者 | 郑丽媛 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 互联网是有记忆的. 从混沌初开到万物互联,从「程序英雄」到「平台诸侯」,中国计算机到互联网的发展历经 60 个春秋,整个 ...

  5. 成长的故事――痛且快乐的

    成长的故事――痛且快乐的 Drate 写于2005/9/5   我是2001年从一所中专学校毕业的,而在我毕业之前,那时就知道了CSDN,我在CDSN的账号Drate应该是在99年前后注册的吧,那时上 ...

  6. 成长的路上,痛并快乐着

    异地求学七年,从地图的的西北部跨越到地图的南部.一路行走着,一路成长着,有痛,有快乐.或许,痛并快乐着也是一种生活的姿态.或许,有过痛的青春才深刻,而深刻的背后即是思考.理解.包容与成熟.可有时候,宁 ...

  7. 码农晋升为技术管理者后,痛并快乐着的纠结内心

    有一个非常有趣的现象:据说大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到管理岗位上的,并非是自己当初有强烈意愿.主动去选择管理岗的.这种被动的比例还不低,高达 ...

  8. 图解UCWEB创业故事 痛并快乐着

    图解UCWEB创业故事 痛并快乐着 浏览次数: 17次 2008年11月03日 雷军新浪博客 字号: 大 中 小 分享到: QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 开心网 更多 0 上周六,看了 ...

  9. 【答题卡识别】Hough变换答题卡识别【含Matlab源码 250期】

    ⛄一.获取代码方式 获取代码方式Q: 完整代码已上传我的资源:[答题卡识别]基于matlab Hough变换答题卡识别[含Matlab源码 250期] 获取代码方式2: 付费专栏图像处理(Matlab ...

最新文章

  1. MPB:基于BIOLOG的微生物群落功能分析
  2. 售前工程师的成长(五)---一个老员工的经验之谈
  3. sql计算留存_免费教程《图解SQL面试题》
  4. 以下用于数据存储领域的python第三方库是-Python数据存储及表示
  5. effective c++ 条款20:宁以pass-by-reference-to-const替换pass-by-value
  6. j.u.c系列(11)---之并发工具类:Exchanger
  7. 上传文件到ftp服务器
  8. IDEA(2018)连接MySQL数据库失败的解决方法(报错08001)
  9. 各种机器学习和深度学习的中文微博情感分析
  10. Matlab Tricks(六)—— 矩阵乘法的实现
  11. stm32L1xx系列低功模式配置+STOP模式+RTC唤醒
  12. 网页认证上网服务器无响应,portal认证失败,网络故障或者portal服务器没有响应排查方法...
  13. 2021年「博客之星」评选,期待大家为我送一个五星评分,谢谢
  14. Win10图片打开方式没有“Windows照片查看器”
  15. c语言二叉树族谱管理系统,数据结构课程设计报告(用二叉树实现家谱管理系统).doc...
  16. Matlab中属性 get 方法的使用
  17. C 语言 抽象语法树AST
  18. 那些证书相关的玩意儿(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)
  19. 华为开发者联盟申请鸿蒙开发者Beta版,华为面向开发者发布鸿蒙技术测试版
  20. yum报错failure: repodata/repomd.xml from Centos: [Errno 256] No more mirrors to try. importing repomd.

热门文章

  1. Android异步加载全解析之引入二级缓存
  2. ROS 内外网做双网卡绑定负载分流教程bonding 配置教程
  3. 启动Intent之前先检查是否有合适的接收者
  4. Linux 命令(90)—— which 命令
  5. Linux 命令(76)—— kill 命令
  6. C++ 文字常量与常变量
  7. linux下将编译错误输出到一个文本文件
  8. BZOJ4415: [Shoi2013]发牌
  9. ReportViewer 安装
  10. [TCP/IP] TCP建立与终止