deerchao的《正则表达式30分钟入门教程》我读过好几遍,可以说是极好的学习正则表达式的入门文章。我常用的文本编辑器是Vim,具有强大的查找功能。不过,Vim的表示方式和《正则表达式30分钟入门教程》有些不同。这遍文章对应教程,把不同部分列出来,作为备份。
说明:相同的就不列出来了。
说明:相同的就不列出来了。
序号 | 入门教程 | Vim | 备注 |
1 | \b是正则表达式规定的一个特殊代码……代表着单词的开头或结尾,也就是单词的分界处 | 没有直接对应的。 \<,表示单词的起始; \>,表示单词的结 | 要查找单词hi,要用 \<hi\> |
2 | +则匹配重复1次或更多次 | \{1,} 1 或更多,同 \+ | \d+匹配1个或更多连续的数字,Vim用 \d\+ |
3 | ? 重复零次或一次 | \{0,1} 0 或 1,同 \= | |
4 | \(?0\d{2}[) -]?\d{8} 这个表达式可以匹配几种格式的电话号码 | \(\=0\d\{2}[) -]\=\d\{8} | |
5 | 如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开 | 在一个查找模式中,"或" 运算符是 "\|" | |
6 | \b(\w+)\b\s+\1\b 可以用来匹配重复的单词 | \<\(\w\+\)\s\+\1\> | |
7 | \b\w+(?=ing\b),匹配以ing结尾的单词的前面部分(除了ing以外的部分) | \<\w\+\(ing\)\@= | Vim称为:零宽度匹配前面的匹配原 |
8 | (?<=\bre)\w+\b 会匹配以re开头的单词的后半部分(除了re以外的部分) | \(\<re\)\@<=\w\+ | 零宽度反向匹配。要求前面的匹配原紧贴在后面的模式之前匹配 |
9 | 假如你想要给一个很长的数字中每三位间加一个逗号(当然是从右边加起了) ((?<=\d)\d{3})+\b | \(\(\d\)\@<=\d\{3}\)\+\> | |
10 | (?<=\s)\d+(?=\s)匹配以空白符间隔的数字 | \(\s\)\@<=\d\+\(\s\)\@= | |
11 | 匹配包含后面不是字母u的字母q的单词 \b\w*q(?!u)\w*\b | \<\w*q\(u\)\@!\w*\> | 零宽度否匹配,亦即,要求前面的匹配原在当前位置_不_匹配 |
12 | \d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字 | \d\{3}\(\d\)\@! | |
13 | \b((?!abc)\w)+\b匹配不包含连续字符串abc的单词 | \<\(\(\(abc\)\@!\)\w\)\+\> | |
14 | (?<![a-z])\d{7}匹配前面不是小写字母的七位数字 | \([a-z]\)\@<!\d\{7} | 零宽度反向否匹配,要求前面的匹配原_不_紧贴在其后的模式之前匹配 |
15 | (?<=<(\w+)>).*(?=<\/\1>)匹配不包含属性的简单HTML标签内里的内容 | 没解决,寻求帮助 |
以前的文章《Vim中表示匹配尽可能少的正则表达式【.\{-}】》
没有评论:
发表评论