@rihkddd
2014-10-29T15:46:40.000000Z
字数 665
阅读 2004
读书笔记
正则表达式
正则表达式是用来处理文本的有力工具,正则表达式是一个通用的模型,再很多编程语言和文本编辑器中都有支持。
一个有用的命令:egrep
,通过指定-i
参数可以忽略大小写。
egrep -i '^(From|Subject):' mailbox.txt
就是一个字符,也是正则表达式匹配的最小单位。
元字符总结:
元字符 | 名称 | 作用 |
---|---|---|
^ | 托字符 | 锚定行首位置 |
$ | 美元符 | 锚定行尾位置 |
\< | 反斜杠-小于 | 锚定单词的开始位置 |
\> | 反斜杠-大于 | 锚定单词的结束位置 |
| | 竖线 | 匹配|两边的任意一个分支 |
(...) | 括号 | 限定作用范围 |
. | 点号 | 单个任意字符占位符 |
[...] | 字符组 | 匹配[]中列出的单个字符,可以使用连字符表示范围 |
[^...] | 排除型字符组 | 匹配为不等于列出字符的单个字符 |
\quad |
重复次数 | 含义 |
---|---|---|
? | [0,1] | 可以不出现,也可以只出现一次 |
+ | [1,\infty] | 至少出现1次,至多不限 |
* | [0,\infty] | 可以不出现,也可以出现任意多次 |
{m,n} | [m,n] | 至少出现m次,至多出现n次 |
问题,匹配连续出现的重复单词。
反向引用可以匹配与先前部分匹配一样的文本。
用法:把需要引用的部分用小括号括起来,然后用\i
(i为需要引用的()
的序号)。
eg:\<([A-Za-z]+) +\1>即可实现匹配连续出现的重复单词。
如果要匹配的内容里面有元字符,那么元字符的匹配需要使用转义符号\
。