正则表达式 - 基础语法

基本单字符

  • . 代表适配任意单个字符(换行除外)

    1
    2
    3
    b..k
    book --- 匹配
    bok --- 不匹配
  • \s 匹配空白字符、空格、制表符和换行符

    1
    2
    3
    bo\sok
    book --- 不匹配
    bo ok --- 匹配

字符限制

  • [] 限定某一位上字符的取值范围 [^] 限定某一位上不能取的值
    1
    2
    3
    [a-z]ook
    book --- 匹配
    Book --- 不匹配
1
2
3
4
[a-zA-Z0-9]ook
book --- 匹配
Book --- 匹配
5ook --- 匹配
1
2
3
4
[^a-zA-Z]ook
book --- 不匹配
Book --- 不匹配
5ook --- 匹配

\d 等价于 [0-9]
\D 等价于 [^0-9]
\w 等价于 [a-zA-Z0-9_] 下划线代表可以适配下划线
\W 等价于 [^a-zA-Z0-9_]

匹配数量

  • ? 出现0次或1次

    1
    2
    3
    4
    bo?k
    bk --- 匹配
    bok --- 匹配
    book --- 不匹配
  • * 出现0次或多次

    1
    2
    3
    4
    bo*k
    bk --- 匹配
    bok --- 匹配
    book --- 匹配
  • + 出现1次或多次

    1
    2
    3
    4
    bo+k
    bk --- 不匹配
    bok --- 匹配
    book --- 匹配
  • {m,n} 至少出现m次,最多出现n次 {m,} 至少出现m次 {n} 正好出现n次

    1
    2
    3
    4
    5
    bo{2,4}k
    bok --- 不匹配
    book --- 匹配
    booook --- 匹配
    boooook --- 不匹配
1
2
3
4
bo{1,}k
bk --- 不匹配
bok --- 匹配
booooook ---匹配
1
2
3
4
bo{2}k
bok --- 不匹配
book --- 匹配
boook --- 不匹配

整体

  • |

    1
    2
    3
    4
    book|hello
    book --- 匹配
    hello --- 匹配
    welcome --- 不匹配
  • () 整体强调

    1
    2
    3
    4
    (book){2,3}
    book --- 不匹配
    bookbook --- 匹配
    bookbookbookbook --- 不匹配

行首、行尾

  • ^ 匹配行首 $匹配行尾
    1
    2
    3
    ^book
    book hello --- 匹配
    hello book --- 不匹配
1
2
3
book$
hello book --- 匹配
book hello --- 不匹配
1
2
3
4
^book$
book hello --- 不匹配
hello book --- 不匹配
book hello book --- 匹配

贪婪和惰性

  • 贪婪

    1
    2
    b(.*)k // 匹配b和k中间尽量多的字符
    bsadfk basasdk bfasdfk 匹配出整个字符串,将所有b和k中间的字符尽可能的匹配出来
  • 惰性

    1
    2
    b(.*?)k // 匹配b和k中尽量少的字符
    bsadfk basasdk bfasdfk 匹配出整个字符串中的bsadfk、basasdk、bfasdfk三部分,因为是匹配尽可能少的字符

版权声明:出自Jerry LMJ的原创作品,未经作者允许不得转载。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器