学习正则表达式

以前模模糊糊看了一些关于正则表达式的知识,不是很全面,今天碰到一个不错的教程,认真学习一下。教程地址,备份地址。

  • (pattern) 匹配pattern并获取这一匹配。
\b(\w+)\b\s+\1\b       //可以匹配重复的单词,像go go, 或者kitty kitty

  • (?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。
  • (?=pattern) 正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
    Windows(?=95|98|NT|2000)  //能匹配“Windows2000”中的“Windows”,但不能匹
                              //配“Windows3.1”中的“Windows”。

  • (?!pattern) 正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。
    Windows(?!95|98|NT|2000) //能匹配“Windows3.1”中的“Windows”,但不能匹
                             //配“Windows2000”中的“Windows”。

  • (?<=pattern)  反向肯定预查,与正向肯定预查类拟,只是方向相反。
    (?<=95|98|NT|2000)Windows //能匹配“2000Windows”中的“Windows”,但不能匹
                              //配“3.1Windows”中的“Windows”。

  • (?<!pattern) 反向否定预查,与正向否定预查类拟,只是方向相反。
    (?<!95|98|NT|2000)Windows //能匹配“3.1Windows”中的“Windows”,但不能匹
                              //配“2000Windows”中的“Windows”。

其他一些例子

1.给数字加逗号

/(?=(?!\b)(?:\d{3})+(?!\d))/g  //可以使“123456789”转化为“1234,567,890”

2.匹配以bi开头的单词的不包含bi的部分, 例如“bicycle and bilingual binary and tibial”,需要匹配bicycle的cycle,bilingual的lingual,binary的nary,但不匹配tibial。
(?<=(\bbi))(\w+)\b

未完待续。

参考:

1.http://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F

2.http://iregex.org/

你可能感兴趣的:(学习正则表达式)