之前写代码用的正则表达式都是google来的,直到一天我觉得有必要好好学习下了。一旦你开始注意一个问题,你会发现滿世界都是它。vim中的替换,今天读的linux shell居然专门有一章!好好总结一下吧。
1. 规则的力量
正则表达式全是一个个规则,但这些小小的规则可以完成无比复杂的模式匹配,如果用函数去完成不知道要多少代码。其中就是规则的力量,当有一个好的规则的时候,只要遵守,极大的降低了复杂度。计算机如此,人的世界也是如此。人的世界和计算机的世界很多相同,不过最大的不同在于人有欲望,所以规则的力量在人的世界中还没有发挥出最大功效。
2. 位置匹配
主要在开始和结束位置匹配。一个巧妙的应用是sed ‘/ˆ$/d’,^$过滤掉了空行。我经常在vim中写python加注释也会用到 :10,15s/^/#/g。
3. 字符匹配
[0123]这样去匹配对应的字符,[a-z],[c-h]这样更方便。
[[:alpha:]] Match any alphabetical character, either upper or lower case.
[[:alnum:]] Match any alphanumeric character 0–9, A–Z, or a–z.
[[:blank:]] Match a space or Tab character.
[[:digit:]] Match a numerical digit from 0 through 9.
[[:lower:]] Match any lowercase alphabetical character a–z.
[[:print:]] Match any printable character.
[[:punct:]] Match a punctuation character.
[[:space:]] Match any whitespace character: space, Tab, NL, FF, VT, CR.
[[:upper:]] Match any uppercase alphabetical character A–Z.
将常用的又制定一套规则。
4.排除匹配
通过^可以排除匹配
5. 次数匹配
2到4条都是匹配单个字符,如何匹配多个字符?
* zero or more
+ at least once
? zero or one
{n} n times
这样可以匹配多个字符了!把握了过程。
最后注意()可以用在字符串上,比如:
$ echo “Sat” | gawk ‘/Sat(urday)?/{print $0}’
Sat
$ echo “Saturday” | gawk ‘/Sat(urday)?/{print $0}’
Saturday
就这几个规则匹配文本无敌了。
(收起)