免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux
打印 上一主题 下一主题

正则表达进阶大讨论!欢迎参与讨论!(获奖名单已公布-2012-7-6) [复制链接]

论坛徽章:
0
41 [报告]
发表于 2012-06-02 14:22 |只看该作者
我问一个问题:正则表达中的awk之类的命令,我用起来感觉特别晦涩,难倒没有一种简便而又好记的办法吗?

不好意思,我不是计算机出身,我是学通信的.现在的也忘了,在从事嵌入式软件开发.
个人认为python很好,但是嵌入式里面用的更多的是shell.

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
42 [报告]
发表于 2012-06-02 14:46 |只看该作者
回复 41# liangxiaozhang


    awk还好吧  就想编程语言一样的 不好记指的是?多用就熟悉了~~~

论坛徽章:
0
43 [报告]
发表于 2012-06-02 22:20 |只看该作者
1、在你的日常工作中会使用正则表达式解决什么样的问题?
perl写爬虫,用正则提取网页中我所需要的信息(市场信息收集)。
修改字符串和一些数据只要用在emeditor上。
把excel的内容复制到emeditor中,做些修改,再转回excel。大概叫数据清理吧。excel要支持正则就好了。

2、正则表达式的用法在各个语言、脚本里面略有不同,你有什么学习经验可以分享给初学者?
只用perl和emeditor。
据我所知,perl支持正则比较全面。不过有个问题就是逆向环视("(?<=)"/"(?<!)")必须定长,而且不能超过256(perl5.12是这样)。
正则引擎从效率的角度这样处理是没问题的。我们可以灵活变通来实现自己的目的。
emeditor中不支持逆向环视。好像是因为用的js的正则方法。

论坛徽章:
0
44 [报告]
发表于 2012-06-03 00:34 |只看该作者
其实很多时候我发现正规表达式这个概念本身不是很清楚,可能是我的理解能力不够,比如说操作符,sed命令后面接的匹配规则和grep后面的匹配规则,都是算作正规表达式嘛?如果要系统的学习起来该怎么学?

论坛徽章:
0
45 [报告]
发表于 2012-06-03 00:35 |只看该作者
另外想请教一个问题,grep -Pq '\w+' 这句什么意思啊 ?求高人指点啊 在线等答案。

论坛徽章:
0
46 [报告]
发表于 2012-06-03 08:04 |只看该作者
在我的工作中正则一般有以下用途:
1.客户端表单提交的时候,表单元素的规则性验证
2.服务端表单提交后的规则是否正确的验证
3.替换字符串中的指定内容,比如替换html中img地址
5.获取字符串中匹配的内容
以上是我一般用正则的场景,大家可以进行补充和提议啊,:wink:

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
47 [报告]
发表于 2012-06-03 08:22 |只看该作者
一个人的编程能力强不强 看他写的正则就知道了

论坛徽章:
0
48 [报告]
发表于 2012-06-03 10:50 |只看该作者
就自己的情况谈谈吧

1、正则表达式是个神奇的东西,有时一个正则就可以把一个复杂的文本编辑工作变得如此简单,perl, grep, sed, awk, vim 里面的正则都有用到,区别最大的还是vim和其它几个,vim的也很强大,不过环视和一些列匹配与其他的几个写法不一样。
2、在日常工作中,用的最多的是sed的正则匹配文本编辑,grep的搜索输出,vim的批量替换,perl的日志解析,都会用到regexp,比如最长用到的shell是获取本机eth1的ip地址,我使用
  1. /sbin/ifconfig eth1 | grep -oP '(?<=inet addr:)[0-9.]{7,15}'
复制代码
还发现grep配合-P使用,可以匹配多行,打破了grep传统单行模式匹配的局限性,例子:
  1. lxmxn@shell.example $ cat test   
  2. this is china unix bbs
  3. we are learning regexp for : [ perl
  4.   vim
  5.   grep
  6.   sed
  7.   awk ]
  8. that's all. thanks.
  9. lxmxn@shell.example $ grep -oP '(?si:(?<=\[).*(?=\]))' test   
  10. perl
  11.   vim
  12.   grep
  13.   sed
  14.   awk
  15. lxmxn@shell.example $
复制代码

论坛徽章:
0
49 [报告]
发表于 2012-06-03 16:49 |只看该作者
很少用到脚本语言啊

论坛徽章:
0
50 [报告]
发表于 2012-06-03 21:10 |只看该作者
来学习一下...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP