- 论坛徽章:
- 5
|
本帖最后由 blackold 于 2015-03-10 19:36 编辑
回复 1# Shell_HAT
1、初学者怎样快速掌握正则表达式?请结合实际经验,分享自己当初学习时遇到的困难和
解决方法。
万事开头难。如果没有一定的基础,开始接触正则时,你会感觉有相当的难度,甚至无所
适从。但,和其它未知事物一样,一旦你开始把玩它、靠近它、了解它,你也会觉得并没
有想象的那么难。
没有捷径,练习是最好的学习方法。至于正则学习工具, 鼎鼎大名的 grep 命令是学习正
则的最好工具,没有之一。
首先,设置好 shell 学习环境,让 grep 的输出显示正则表达式所匹配的字符串,你可以
这样设置:- GREP_OPTIONS='--color=auto'
- export GREP_OPTIONS
- GREP_COLOR="1;32;41"
- export GREP_COLOR
复制代码 的输出如下:
红色部分就是正则"gular"匹配的字符串。
通过 grep 观察不同的正则表达式所匹配的字符串的差异,你会慢慢理解正则表达式,体
验正则的乐趣。
好的开头是成功的一半。一旦入门了,相信后面的学习会轻松有趣得多。
2、初学者经常会问:好不容易学会一点正则表达式,怎么 grep/sed/Shell/Perl 等各个
命令和脚本里面的用法好像都不一样呀!如何帮助初学者解决这个困惑?
有各种正则,但大同小异,基本是一样的。
首先,要了解正则的两个大类:BRE, Basic Regular Expression 基本正则表达式, 和
ERE, Extended Regular Expression 扩展正则表达式。
在 BRE 中 () + ? 等是字面字符,\( \) \+ \? 才是正则元字符,具有特殊含义。而在
ERE 中 () + ? 等就是元字符,具有特殊含义。
grep 默认的就是 BRE, egrep (grep -E, 中的 e 就是 extended) 就是 ERE。比如:
urfile 的内容:BRE, 输出为:
BRE, 输出为:
- $ grep -E '[a-z]\+' urfile
复制代码 ERE, 输出为:
与 grep '[a-z]+' urfile 的输出相同。- $ grep -E '[a-z]+' urfile
复制代码 ERE, 输出为:
与 grep '[a-z]\+' urfile 的输出相同。
其次,要了解不同实现(工具,语言,或者正则引擎)下正则的不同。必要时参考相关资料。
3、在阅读正则表达式的书籍的同时,哪些在线或者离线的工具可以帮助初学者做练习?这
些工具有哪些优势?
唯一推荐就是 grep 命令。简单,方便,还符合 UNIX 风格。
GUI 工具不推荐,觉得不适合学习。
4、看过几本正则表达式的书籍之后,如何在实际工作中学以致用、融会贯通?
遇到问题时,不妨试着用正则解决,相比之下,正则方法是否更快捷简单?
也不是什么场景都适合正则。随便经验的丰富,相信会作出正确的选择。
|
评分
-
查看全部评分
|