正则表达式

正则表达式

分组

imgimg

img

  1. 以下是扩展正则表达式,基本正则表达式稍有不同,扩展表达式使用 egrep,sed -E, grep -E

  2. 与文件通配符(wildcard)用法不同

  3. 正则表达式中是区分大小写的

  4. 正则表达式会匹配到第一个(起始位置最前),然后再是最贪婪的字符串。所以 colou??r 是没有意义的

  5. 正则表达式会尽可能完全匹配,在此基础上满足前面的尽可能贪婪匹配

    1
    2
    3
    4
    (.*) (.*)
    ab ab // 前一个组2,后一个组2
    (.*)(.*)
    ab ab //都属于组2
  6. 单词分割符

    \b 是单词的边界,实际上不存在

    和 ^ $ 类似

    it’s a cat中,实际有八个单词分隔符

  7. red|apple|banana 如果没有括号,是以两个 | 之间为一个整体

  8. 捕获组

    正则表达式((cat)|dog)表示匹配cat或者dog。这里有两个捕获组,如果输入文本是dog,那么捕获组1是dog,捕获组2为空。

  9. 常用标志

    标志 描述
    i 忽略大小写
    g 全局搜索
    m 多行修饰符:锚点^ $在每行的起始(原本在全文开头和结尾)
  10. 区分非捕获组和断言

    非捕获组(?:)会被匹配到,到不会被捕获。常用于使用 | 时需要括号,但又不想捕获,如 (red|blue|green) color 只是单纯需要匹配颜色,就可以用 (?:red|blue|green) color

    断言不会被匹配(指出现在 \0 中),也不会被捕获,也不消耗字符

  11. 预查,同样是不会被捕获的

    Windows(?=95|98|NT)

    ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\!\@\#\$\%\^\&\*\(\)]).*{8,} 强密码

    注意预查只是断言并不消耗字符,如上面强密码例子,断言有任意字符开头的小写字母,大写字母,但它们并不消耗字符!

不要用 \w{2, 6},中间不能有空格!应该写 \w{2,6}


正则表达式
https://lllei.top/2022/10/02/正则表达式/
作者
Lei
发布于
2022年10月2日
许可协议