zoukankan      html  css  js  c++  java
  • 通配符家族简介

    通配符和正则表达是常引起混淆的一组概念。因此参考wikipedia和其他一些通用的linux教材,视图将其弄明白。
    通配符的概念据说起源于一个用于将文件路径(以通配字符为参数)转化为可执行命令的函数glob(),是'global command'的缩写,现在这个函数已经成为了shell里的库函数。但平时我们所谓的通配符对应的应该是'wildcard',也就是这个函数中的通配字符参数。

    一般通配符(wildcard)用于聚集(glob)以系列名字类似的文件,而正则表达式(regexps)则常用于字符串的模式匹配。

    通配字符一般只包括任意多字符通配符(*), 任意单字符通配符(?) 和 指定单字符通配符[]。但由于其不支持字符完备集的约束,因此没有被包含在正则表达式的范围内。 只能处理那些较为简单的匹配任务。

    unix系统中的通配符增加了取反符[!],也有用[^]的。
    dos和windows中的cmd中不支持[],而只能出现在模式的尾部。
    类SQL语言中like关键字中的类通配符用_取代了?, %取代了

    正则表达式中用.替代了?, .*替代了*,另外正则表达式支持局部匹配,而正则表达式仅支持整个字符串的匹配。

    正则表达式又分为基本型和扩展型,其基本的规则如下:
    基本正则表达式

    1. 元字符
      . 任意单个字符
      [] 任意匹配的单个字符
      [^] 任意不匹配的单个字符
    2. 次数
      * 任意多次
      ? 0次或1次
      {m, n } 至少m次, 至多n次
    3. 位置
      ^ 行首
      $ 行尾
      < 词首
      > 词尾
    4. 分组
      ( ) 定义分组
      引用第n个分组

    扩展正则表达式

    1. 元字符: 同
    2. 次数匹配:
      + 至少一次
      ? 不需要加
      {} 不需要加
    3. 位置锚定:同
    4. 分组
      () 不需要小括号
      1 同
    5. 逻辑符号 c|cat表示c或者cat
      | 或者
  • 相关阅读:
    C++ for(char c:s)遍历字符串||for (char c : s)和for (char& c : s)的区别
    二维数组的查找--剑指offer(C++)
    C++学习笔记之--boolalpha
    在C++中matrix.size()和matrix [0] .size()之间的区别是什么?
    C3_note
    用webpack4从零开始构建react脚手架
    php
    正则表达式基础
    DOM
    常用H5
  • 原文地址:https://www.cnblogs.com/noway-neway/p/5080775.html
Copyright © 2011-2022 走看看