画布 1
Glob模式正则匹配
  1.规则
    *
      匹配0个或多个任意字符
    ?
      匹配1个任意字符
    [string]
      匹配括号内任意一个字符
    [^string]
      不匹配括号内任意一个字符
    [a-z]
      括号内a-z中的任意一个字符
    \x
      匹配转义字符
  2.stringmatchlen梳理
    int stringmatchlen(const char *pattern, int patternLen, const char *string, int stringLen, int nocase)
  循环处理pattern每个字符
    循环处理pattern每个字符
      switch
        *
          （1）pattern下一个字符仍为*，循环取下一个字符
          （2）pattern长度剩余1，匹配成功
          （3）string长度不为0
            a. 递归匹配子pattern和string，递归全部匹配，则匹配成功
            b. 否则继续匹配子pattern和子string
          （4）string长度为0，匹配不成功（从（2）处知，由于此时pattern长度还有剩余）
        ？
          （ 1）string长度为0，匹配不成功
          （2）继续匹配子pattern和子string
        [
          （1）判断第一个字符是否是^，若是对结果取非，并且继续子pattern判断
          （2）循环处理匹配
            a. 如果当前pattern是\，则匹配pattern的下一个字符，匹配则match=1
            b. 如果当前pattern是]，则跳出循环
            c. 如果当前pattern长度为0，则pattern回退一位，跳出循环
            d. 如果pattern下一个是-，并且当前pattern>=3，则判断下一个string是pattern中的一个，匹配则match=1
            e. 其他情况，直接对比pattern和string，匹配则match=1
          （3）如果match为0，则为不匹配
          （4）match=1，则继续匹配
        \
          如果pattern长度大于2，则继续匹配子pattern 和string
        无正则关键字
          直接对比，不相等则不匹配
      判断string长度为0
        循环处理pattern为*情况
    判断pattern和string长度均为0情况
      均为0匹配成功
      否则匹配失败