• 通配符与正则表达式


    文件名通配


    通配符:*?[][^]
      *:匹配任意长度任意字符,可以是零个
        ls ./.* 这个代码很有意思
      ?:匹配任意一个字符
      []:匹配指定范围内的任意单个字符
        [[:upper:]] 大写字母   [[:lower:]] 小写字母  [[:alpha:]] 字母  [[:digit:]] 数字
        [[:alnum:]] 字母和数字  [[:space:]] 空格    [[:punct:]] 标点符号和特殊字符
        [0-9]   a[abG]b   [a-z]   [a-Z]   最后两个除区间端点外不区分大小写    
      [^]:匹配指定范围以外的字符
        [^0-9]  [^[:digit:]]

    [zyb@ZYB test_dir1]$ ls
    a1b  a5b  a8b  aab  aAb  Aab  azb  aZb  bab  Bab  Gab  Yab  Zab
    [zyb@ZYB test_dir1]$ ls a[1-4]b
    a1b
    [zyb@ZYB test_dir1]$ ls a[1-7]b
    a1b  a5b
    [zyb@ZYB test_dir1]$ ls a[0-9]b
    a1b  a5b  a8b    
    [zyb@ZYB test_dir1]$ ls [A-z]ab
    Aab  bab  Bab  Gab  Yab
    [zyb@ZYB test_dir1]$ ls [a-z]ab
    aab  Aab  bab  Bab  Gab  Yab
    [zyb@ZYB test_dir1]$ ls [a-Z]ab
    aab  Aab  bab  Bab  Gab  Yab  Zab
    [zyb@ZYB test_dir1]$ ls [a-g]ab
    aab  Aab  bab  Bab
    [zyb@ZYB test_dir1]$ ls [a-G]ab
    aab  Aab  bab  Bab  Gab
    [zyb@ZYB test_dir1]$ ls a[^1-4]b
    a5b  a8b  aab  aAb  azb  aZb
    [zyb@ZYB test_dir1]$ ls a[^a-z]b
    a1b  a5b  a8b  aZb
    

    正则表达式


    正则表达式:是一类字符所书写出来的模式
    元字符:类似通配符号,但并不表示字符本身,而是用于额外功能的描述
    正则表达式分为基本正则表达式和扩展正则表达式
    基本正则表达式:
      字符匹配:
        . 匹配任意单个字符
        [] 指定范围内任意单个字符
          [[:lower:]]  [[:upper:]]  [[:alpha:]]  [[:digit:]]  [[:alnum:]]
          [[:punct:]]  [:space:]  [0-9]  [a-Z]  [a-z]  [A-Z]
          注意:最后这两个与文件名通配不同,区分大小写
          [zyb@ZYB ~]$ grep -n "^[A-z]" test_file1 报错
        [^]:匹配指定范围以外的任意单个字符
      次数匹配:用来指定匹配其前面字符的次数
        * 任意次数,单独使用时不包括零次,若和其他组合使用时,则包括零次
          [zyb@ZYB ~]$ grep -n "a(b)*" test_file2 可以只匹配a
        .* 匹配任意长度的任意字符,空格制表符也能匹配
        ? 匹配前面字符出现0次或1次,贪婪模式
        + 匹配前面字符至少一次,
        {m} 匹配m次
        {m,n} 至少m次,至多n次
        {m,} 至少m次,逗号与反斜号之间不能有空格
        {0,n} 至多n次
      位置铆钉:
        ^ 锚定行首,^char
        $ 锚定行尾,char$
        ^$ 空白行,表示空行,不能有空格、制表符等其他任何字符
          ^hello$ 匹配只有hello组成的行,hello前后不能有空格、制表符其他任何字符
      单词的位置锚定:
        <char 锚定词首,或者char
        char> 锚定词尾,或者char
      分组:
        ()
          (ab)*xy 匹配ab任意次
        | 或者,ab|bc 表示ab或者bc
      引用:
        1 后项引用,引用前面分组的第一个左括号及与之对应右括号中的模式所匹配到的内容
        2 后项引用,引用前面分组的第二个左括号及与之对应右括号中的模式所匹配到的内容
        ...
          (a.b)xy1a6bxya6b能匹配 a6bxya7b不能匹配
          1.He likes his lover.
          2.She loves her liker.
          3.He loves his lover.
          4.She likes her liker.
          (l..e).*1r匹配到3、4
    拓展正则表达式:
      字符匹配:
        . 任意单个字符
        [] 指定范围内任意单个字符,同上
        [^] 指定范围外任意单个字符
      次数匹配:
        * 匹配前面字符任意次,同上
        ? 匹配前面字符0次或1次
        + 匹配前面字符至少一次
        {m} 匹配m次
        {m,n} 匹配m至n次
        {m,} 至少m次,逗号与右花括号之间直接不能有空格
        {0,n} 至多n次
      锚定:
        ^ 行首
        $ 行尾
        < char 词首
        > char 词尾
      分组:
        () 分组
        | 或者

  • 相关阅读:
    vue + element-ui实现动态多级表头
    Linux 系统编程 学习:11-线程:线程同步
    Linux 系统编程 学习:10-线程:线程的属性
    Linux 系统编程 学习:9-线程:线程的创建、回收与取消
    Linux 网络编程的5种IO模型:信号驱动IO模型
    Linux 系统编程 学习:8-基于socket的网络编程3:基于 TCP 的通信
    Linux 系统编程 学习:6-基于socket的网络编程1:有关概念
    Linux 系统编程 学习:7-基于socket的网络编程2:基于 UDP 的通信
    Linux 系统编程 学习:5-进程间通信2:System V IPC
    Linux 系统编程 学习:2-进程间通信1:Unix IPC(1)管道
  • 原文地址:https://www.cnblogs.com/hesper/p/8674724.html
Copyright © 2020-2023  润新知