首页 > 技术文章 > 正则表达式笔记

thyong 2016-03-14 10:17 原文

1.\b不匹配字符,只匹配一个位置:它的前一个字符或者后一个字符不全是(一个是,一个不是或不存在)\w。
2.\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。
3.\w匹配字母或数字或下划线或汉字等。
4..匹配换行符(\n)以外的任意字符。
5.\d匹配数字。
6.^匹配字符串的开始。
7.$匹配字符串的结束。
8.\d{5,10},匹配不少于5,不多于10个数字字符串。
9.|意为或,从左到右匹配分支条件。
10.[]用来自定义范围,-范围符号,
    [123],为1,2,3中的一个,
    [1-3],1到3,
    [a-zA-Z0-9],大小写英文+数字,等同\w(如果只考虑英文的话)
11.()标记一个子表达式,默认自动命名(从1开始),在后续表达式中可以引用该子表达式所捕获到的文本:
    \b(\w+)\b\s+\1\b 可以匹配 go go, kitty kitty等, (\w+)表达式被自动命名为1被后文引用:\1
    自定义命名,用(?<name>exp)或(?'name'exp),引用方式用\k<name>或\k'name':
    \b(?<love>\w+)\b\s+\k<love>\b
    \b(?'love'\w+)\b\s+\k'love'\b
    不捕获文本,也不自动命名分组:
    (?:exp)
    用专业术语来说,这个叫做分组以及后向引用,哈哈哈。。
12.(?=exp)    \b\w+(?=ing\b)匹配以ing结尾的单词的前面部分(除了ing以外的部分)
    (?<=exp)    (?<=start)\w+\b匹配以start开头的单词的后半部分(除了start以外的部分)
13.q(?!\d)匹配q后面不跟着一个数字,并且不消费字符,后续的匹配从q后第二个字符开始
    而^\d则会消费字符,后续的匹配从q后第一个字符开始
14.单行模式匹配只是更改.的含义,使它与每一个字符匹配(包括换行符\n)
    多行模式则是更改^和$的含义,使它们分别在任意一行的行首和行尾匹配(不再是整个字符串的开头和结尾)
    名字让人疑惑,但其实两种模式可以同时开启。

推荐阅读