正则表达式 学习笔记(二)

纠正一个错误,昨天我用了Match这个只能匹配出第一个 用Matches可以匹配出所有符合正则表达式的字符

4.字符类的反义

  • [^a]表示匹配任何不是“a”的字符
  • [^a-zA-Z0-9]表示匹配任何不是字母也不是数字的字符
  • [\^abc]匹配一个为“^”或者a或者b或者c的字符
  • [^\^]表示匹配任何不为“^”的字符

5.转义字符类

如何有效的缩短正则表达式的长度?

  • \d = [0-9]               作用相同,都是匹配任何一个数字。(要匹配\d,应该使用正则表达式\\d)
  • \D = [^0-9]             作用相同,表示匹配一个非数字字符。
  • \w = [0-9A-Za-z]      作用相同,都表示匹配一个数字或字母字符
  • \W = [^0-9A-Za-z]   作用相同,表示匹配一个非数字同时不是字母的字符。
  • \s意味着匹配一个空字符(空格,制表符,回车或者换行)
  • \S表示匹配一个非空字符。

6.重复

在字符或字符集之后,你可以使用{ }大括号来表示重复

  • 正则表达式a{1}与a意思相同,都表示匹配字母a
  • a{3}表示匹配字符串“aaa”
  • a{0}表示匹配空字符串。从这个正则表达式本身来看,它毫无意义。如果你对任何文本执行这样的正则表达式,你可以定位到搜索的起始位置,即使文本为空。
  • a\{2\}表示匹配字符串“a{2}”
  • 在字符类中,大括号没有特殊含义。[{}]表示匹配一个左边的大括号,或者一个右边的大括号

示例

  • z.......z = z.{7}z
  • \d\d\d\d-\d\d-\d\d = \d{4}-\d{2}-\d{2}
  • [aeiou][aeiou][aeiou][aeiou][aeiou][aeiou] = [aeiou]{6}

注意:重复字符是没有记忆性的,比如[abc]{2}表示先匹配”a或者b或者c”,再匹配”a或者b或者c”,与匹配”aa或者ab或者ac或者ba或者bb或者bc或者ca或者cb或者cc“一样。[abc]{2}并不能表示匹配”aa或者bb或者cc“

 

7.指定重复次数范围

重复次数是可以指定范围的

  • x{4,4}与x{4}相同
  • colou{0,1}r表示匹配colour或者color
  • a{3,5}表示匹配aaaaa或者aaaa或者aaa
  • a{1,}表示匹配一个或一个以上的连续字符a。依然是匹配最长字符串。当找到第一个a之后,正则表达式会尝试匹配尽量多个的连续字母a。
  • .{0,}表示匹配任意内容。无论你输入的文本是什么,即使是一个空字符串,这个正则表达式都会成功匹配全文并返回结果。

8.重复的转义字符

  • ?与{0,1}相同,比如,colou?r表示匹配colour或者color
  • *与{0,}相同。比如,.*表示匹配任意内容
  • +与{1,}相同。比如,\w+表示匹配一个词。其中”一个词”表示由一个或一个以上的字符组成的字符串,比如_var或者AccountName1.
  • \?\*\+ 表示匹配字符串”?*+”
  • [?*+]表示匹配一个问号,或者一个*号,或者一个加号

示例

  • .{0,}         =    .*
  • [^"]{0,}   =  [^"]* 
  • x?x?x?    =  x{0,3}
  • y*y*     =  y*
  • z+z+z+z+   =  z{4,}

9.非贪婪匹配

这个有必要解释一波,通过在句尾加上一个问号,可以使得字符串重复不再匹配最长字符。

  • 表示匹配\d\d\d\d或者\d\d\d\d\d。也就是和\d{4}一样
  • colou??r与colou{0,1}r相同,表示找到color或者colour。这与colou?r一样。
  • “.*?”表示先匹配一个双引号,然后匹配最少的字符,然后是一个双引号,与上面两个例子不同,这很有用。

 

10.选择匹配

  • cat|dog表示匹配”cat”或者”dog”
  • red|blue|以及red||blue以及|red|blue都表示匹配red或者blue或者一个空字符串
  • a|b|c与[abc]相同
  • cat|dog|\|表示匹配”cat”或者”dog”或者一个分隔符”|“
  • [cat|dog]表示匹配a或者c或者d或者g或者o或者t或者一个分隔符“|”

示例

  • s|t|u|v|w          = [s-w]
  • aa|ab|ba|bb         = [ab]{2}  
  • [abc]|[^abc]        = .
  • [^ab]|[^bc]         = [^b]
  • [ab][ab][ab]?[ab]?    = [ab]{2,4}

转载请注明:http://www.cnblogs.com/CoffeeEddy/p/5608863.html

posted @ 2016-06-23 22:35  咖啡漩涡  阅读(253)  评论(0编辑  收藏  举报