02 July 2014

IMG-THUMBNAIL

正则表达式是传说中黑客的必备技能,也在知道创宇技能表里,之前看过一些,每次都记不住,这次记到这里,忘记了回来看好了。

正则表达式有几个用途:用于验证输入、通过grep查看日志、匹配HTML里面的标签。

正则表达式验证工具Kodos http://kodos.sourceforge.net/

  #   正则表达式   解释  
  1   hi   最常见的查找方式,可以查找任何包含hi这两个连续字符的字符  
  2   \b   【元字符】代表单词的开头或结尾,也就是单词的分界处。只代表位置,不代表字符  
  3   *   【元字符】【重复】代表数量,它前面的字符可以重复任意次来匹配  
  4   .   【元字符】【重复】表示除了换行符以外的任意一个字符  
  5   \d   【元字符】表示一位数字,大括号表示两个连续数字  
  6   \s   【元字符】任意的空白符(space),包括空格,制表符(Tab),换行符,中文全角空格等  
  7   \w   【元字符】匹配字母或数字或下划线或汉字等(word)  
  8   ^   【元字符】和\b类似,表示字符串开始位置  
  9   $   【元字符】和\b类似,表示字符串结束位置  
  10   \   【字符转义】查找元字符本身时使用  
  11   +   【重复】重复一次或更多次  
  12   ?   【重复】前面的字符重复零次或一次  
  13   {n}   【重复】重复n次  
  14   {n,}   【重复】重复n次或更多次  
  15   {n,m}   【重复】重复n到m次  
  16   []   【范围】里面填入候选集合,这表示存在于集合中的一个字符。[aeiou]就匹配任何一个英文元音字母;[0-9]表示0到9之间任意一个数字  
  17   |   【分枝条件】满足其中任意一种规则都应该当成匹配。\d{5}-\d{4}|\d{5}可以认为存在优先级,|优先级高于-  
  18   \W   【反义】匹配任意不是字母,数字,下划线,汉字的字符  
  19   \S   【反义】匹配任意不是空白符的字符  
  20   \D   【反义】匹配任意非数字的字符  
  21   \B   【反义】匹配不是单词开头或结束的位置  
  22   [^x]   【反义】匹配除了x以外的任意字符  
  23   (exp)   【后向引用】【捕获】匹配exp,并捕获文本到自动命名的组里  
  24   (?<name>exp)   【后向引用】【捕获】匹配exp,并捕获文本到名称为name的组里,也可以写成(?’name’exp)  
  25   (?:exp)   【后向引用】【捕获】匹配exp,不捕获匹配的文本,也不给此分组分配组号  
  26   (?=exp)   【零宽断言】匹配exp前面的位置  
  27   (?<=exp)   【零宽断言】匹配exp后面的位置  
  28   (?!exp)   【零宽断言】匹配后面跟的不是exp的位置  
  29   (?<!exp)   【零宽断言】匹配前面不是exp的位置  
  30   *?   【懒惰限定符】重复任意次,但尽可能少重复  
  31   +?   【懒惰限定符】重复1次或更多次,但尽可能少重复  
  32   ??   【懒惰限定符】重复0次或1次,但尽可能少重复  
  33   {n,m}?   【懒惰限定符】重复n到m次,但尽可能少重复  
  34   {n,}?   【懒惰限定符】重复n次以上,但尽可能少重复  
  35   (?'group')   【递归匹配】把捕获的内容命名为group,并压入堆栈(Stack)  
  36   (?'-group')   【递归匹配】从堆栈上弹出最后压入堆栈的名为group的捕获内容  
  37   (?(group)yes|no)   【递归匹配】如果堆栈上存在以名为group的捕获内容的话,继续匹配yes部分的表达式,否则继续匹配no部分  
  38   (?!)   【递归匹配】零宽负向先行断言,由于没有后缀表达式,试图匹配总是失败  

  正则表达式   解释  
  ^\d{5,12}$   QQ号必须为5位到12位数字  
  ^\w+   匹配一行的第一个单词  
  \(?0\d{2}[) -]?\d{8}   (010)88886666,或022-22334455,或02912345678  
  0\d{2}-\d{8}|0\d{3}-\d{7}   8位本地号(如010-12345678)和7位本地号(0376-2233445)  
  (\d{1,3}\.){3}\d{1,3}   IP地址匹配  
  ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)      
  \b(\w+)\b\s+\1\b   匹配重复的单词  
  \b\w+(?=ing\b)   匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I’m singing while you’re dancing.时,它会匹配sing和danc  

参考文献

原文链接:正则表达式,转载请注明来源!

EOF