zoukankan      html  css  js  c++  java
  • linux正则表达式

    正则表达式是对字符串操作的一种方式,用事先定义好的一些特定字符、及这些字符的组合,组成一个“规则字符串”。

    元字符的意义:

      转义字符
    ^ 匹配输入字符串的开始位置
    $ 匹配输入字符串的结束位置
    * 匹配前面的子表达式任意次。例如: zo*能匹配z,也能匹配zo以及zoo
    + 匹配前面的子表达式一次或多次(大于等于一次)。例如:zo+能匹配zo以及zoo,但不能匹配z
    ? 匹配前面的子表达式零次或一次。例如:do(es)?能匹配do或does中的do
    {n} n是一个非负整数,匹配确定的n次。例如:o{2}不能匹配Bob中的o,但能匹配food中的两个o
    {n,} n是一个非负整数,至少匹配n次。例如:o{2,}不能匹配Bob中的o,但能匹配foooood中的所有o。o{1,}等价于o+, o{0,}等价于o*
    {n,m} n和m均为非负整数,其中n<=m。意思是至少匹配n次且最多匹配m次。o{1,3}将匹配fooooood中前三个o为一组,后三个o为一组。注意,在逗号和两个数之间不能有空格
    ? 当该字符紧跟在任何一个其他限制符*,+,?,{n},{n,},{n,m}后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的
    匹配所搜索的字符串。例如:对于字符串oooo,o+将尽可能多的匹配o,得到结果是oooo,而o+?则尽可能少的匹配o,得到结果是o,o,o,o
    . 匹配除 之外的任何单个字符
    (pattern) 匹配pattern并获取这一匹配
    (?:pattern) 非获取匹配,匹配pattern但不获取匹配结果,使用|字符串来组合一个模式的各个部分,例如:industr(?:y|lies)就是industry|industries
    (?=pattern) 非获取匹配,正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串,该匹配不需要获取供以后使用。
    (?!pattern) 非获取匹配,正向否定预查,在任何不匹配pattern的字符串开始处查找字符串。
    (?<=pattern) 非获取匹配,反向肯定预查,与正向肯定预查类似,只是方向相反。
    (?<!pattern) 非获取匹配,反向否定预查,与正向否定预查类似,只是方向相反。
    x|y 匹配x或y,例如:z|food能匹配z或food,[z|f]ood则匹配zood或food或|ood
    [xyz] 字符集合,匹配所包含的任意一个字符,例如:[abc]可以匹配plain中的a
    [^xyz] 负值字符集合,匹配未包含的任意字符,例如:[^abc]可以匹配plain中的plin
    [a-z] 字符范围,匹配指定范围内的任意字符,例如:[a-z]可以匹配a到z范围内的任意小写字母字符
    [^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符,例如:[^a-z]可以匹配任何不在a到z范围内的任意字符
     匹配一个单词边界,也就是指单词和空格间的位置(正则表达式的匹配有两种概念,一种是匹配字符,一种是匹配位置),例如:er可以匹配never中的er,
    但不能匹配verb中的er
    B 匹配非单词边界,erB能匹配verb中的er,但不能匹配never中的er
    cx 匹配由x指明的控制字符,例如:cM匹配一个Control-M或回车符,x的值必须为A-Z或a-z之一。否则,将c视为一个原义的c字符
    d 匹配一个数字字符,等价于[0-9]
    D 匹配一个非数字字符,等价于[^0-9]
    f 匹配一个换页符,等价于x0c和cL
    匹配一个换行符,等价于x0a和cJ
    匹配一个回车符,等价于x0d和cM
    s 匹配任何不可见字符,包括空格、制表符、换页符等等,等价于[f v]
    S 匹配任何可见字符,等价于[^f v]
    匹配一个制表符,等价于x09和cI
    v 匹配一个垂直制表符,等价于x0b和cK
    w 匹配包括下划线的任何单词字符
    W 匹配任何非单词字符,等价于[^A-Za-z0-9]
    um 匹配num,其中num是一个正整数,对所获取的匹配的引用,例如:(.)1匹配两个连续的相同字符

    <
    > 匹配word的开始(<)和结束(>),例如:正则表达式<the>能够匹配字符串for the wise中的the,但不能匹配otherwise中的the

     grep指令:

    -A<列数> 除了显示符合范本样式的那一列外,还显示该列之后的内容

    -B<列数> 除了显示符合范本样式的那一列外,还显示该列之前的内容

    -c 统计符合范本样式的列数

    -C<列数> 除了显示符合范本样式的那一列外,还显示该列之前和之后的内容

    -d 指定查找的是目录

    -h 不显示该列所属文件的名称

    -H 显示该列所属文件的名称

    -i 忽略字符的大小写

    -I 不忽略大小写

    -n 标出符合范本样式的行号

  • 相关阅读:
    查找正序排列的List中缺失的日期数据的一个算法
    了解下C#异常时的输出
    Environment.Exit(0) 、Application.Exit() 、this.Close() 、this.Dispose()的区别
    java--多线程之后台线程
    java--线程状态【转】
    DRP项目总结
    Java实现 蓝桥杯 算法训练 矩阵乘法
    Java实现 蓝桥杯 算法训练 矩阵乘法
    Java实现 蓝桥杯 算法训练 矩阵乘法
    Java实现 蓝桥杯 算法训练 大小写转换
  • 原文地址:https://www.cnblogs.com/sssblog/p/10208595.html
Copyright © 2011-2022 走看看