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

    正则表达式

    正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法

    正则表达式主要用于查找符合某些复杂规则的字符串

    在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,文本处理工具有grep、sed

    1 grep

    grep 文本处理工具

    下面是grep的参数

    -n 行号
    -0 只内容
    -q 静默
    echo $?
    
    -l 文件名
    -A 5 后五行
    -B 3 前3行
    -C 2 上下两行
    -c  行数
    -E==egrep
    -i 忽略大小写
    -v 去反
    -w 单词
    

    2 正则表达式的规则

    ^
    gerp '^root' 匹配root开头的
    gerp 'bash$' 匹配bash结尾的 能都登录的

    .
    任意一个字符
    gerp '^.'
    gerp 'b.n'
    *
    前面的字符有0个到无穷个
    *前面紧贴的字符
    左边那一个字符
    +
    不能直接用grep
    egrep gerp -e
    左边 有一个到无穷个
    左边那一个字符

    {}
    内部可以指定数量
    {2,4} 指定范围
    {2,} 2-无穷


    左边出现0次或者1次

    []
    取其中的一个
    egrep
    [asdfasdt123456-]
    需要转义
    -放到结尾 需要匹配-本身
    [a-z]小写字母
    [A-Z]大写字母
    [a-zA-Z]==[a-Z]小写大写字母
    [0-9]
    [0-9]+

    ^[0-9]  取开头是数字的
    ^[^0-9]取反
    

    3 sed stream editor 流编辑器

    过滤一行的内容 1 定位 2 处理
    -n 不打印 静默
    -e '' -e '' 处理多个
    -i
    -f 规则写入文件
    定位 '1'
    '3d' 删除第3行 实际文件没有写入
    ‘3p’打印第三行再打印一次
    -n '3p'只打印第三行
    ‘3c 1111111’ 第三行改成1111111打印
    ‘3a 11111’ 追加
    ‘3i 111’ 插入在原来第三行的前面
    正则定位:
    sed
    '/^root/d' test.txt 杀出root 开头
    ‘1,4d’ tes.txt 删除1-4
    ‘1d;4d’ 删除1和4行

    最常用
    sed 's' test 替换
    sed 's/root/hello/' test 没定位 全部匹配
    sed 's/root/hello/g' test 没定位 全部匹配 g 把一行中的全部修改

    sed -r 扩展
  • 相关阅读:
    cf 1452E. Two Editorials(中点排序)
    cf 888G
    cf 1447E. Xor Tree(二进制分治)
    2020ICPC·小米 网络选拔赛第一场 E-Phone Network (线段树)
    cf 1447D. Catching Cheaters ( 最大子段和思想 dp )
    POJ
    cf 1437F.Emotional Fishermen(计数dp)
    霍夫丁不等式
    切比雪夫不等式
    霍夫丁不等式引理证明
  • 原文地址:https://www.cnblogs.com/Python666/p/6601408.html
Copyright © 2011-2022 走看看