zoukankan      html  css  js  c++  java
  • linux学习笔记(十二)

    正则表达式基础

    1.正则表达式 regular expression
    一个正则表达式通常被称为一个模式(pattern),为来描述或者匹配一系列符合某个句法规则的字符串。

    2.基本语法

    选择:
    | “boy|girl”可以匹配boy或girl

    数量限定:

    • 表示前面的字符必须出现至少一次(1次或多次),如“goo+gle”可以匹配“gooole”,“goooole”
      ? 表示前面的字符最多出现一次(0次或1次),如“colou?r”可以匹配“color”、“colour”
    • 表示前面的字符可以不出现、或者出现一次或者出现多次(0次、或1次、或多次),如“0*42”可以匹配42、042、0042、00042等

    范围和优先级:
    ( ) 用来定义定义模式字符串的范围和优先级。
    如gr(a|e)y 等级与gray|grey
    (grand)?father 匹配father和grandfather

    部分语法:
    将系一个字符标记为一个特殊字符或一个原义字符。如“n”匹配“n”,“ ”匹配换行符,“”匹配,(匹配(

    ^ 匹配输入字符串的开始位置
    $ 匹配输入字符串的结束位置
    {n} n是一个非负整数,匹配确定的n次
    {n,} n是一个非负整数,至少匹配n次。{1,}等价于+,{0,}等价于*
    {n,m} n,m均为非负整数,n<m,最少匹配n次,最多匹配m次

    • 匹配前面的子表达式零次或多次
    • 匹配前面的子表达式一次或多次
      ? 匹配前面的子表达式零次或一次
      ? 当?紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面,匹配模式是非贪婪的,非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式尽可能多的匹配所搜索的字符串。如“00000”,“0+?”匹配“0”,“0+”匹配所有0
      (patter)匹配pattern并获取之一匹配的子字符串
      x|y 匹配x或y
      [xyz] 字符集合,匹配所包含的任意一个字符。其中特殊字符仅有反斜线保持特殊含义,用于转义字符。其它特殊字符如星号、加号、各种括号等均作为普通字符。脱字符^如果出现在首位则表示负值字符集合;如果出现在字符串中间就仅作为普通字符。连字符 - 如果出现在字符串中间表示字符范围描述;如果如果出现在首位则仅作为普通字符

    [^xyz] 排除型字符集合。匹配未列出的任意字符。
    [a-z] 字符范围,匹配制定范围内的任意字符
    [^a-z] 排除型字符范围。匹配任何不在制定范围内的任意字符

    3.优先级
    转义符、括号中括号、限定符、定位点和序列(^,$,任何元字符)、选择

    4.grep模式匹配命令
    grep命令用于打印输出文本中匹配的模式串,使用正则表达式作为匹配条件。
    grep 参数 模式 file
    -b 将二进制文件作为文本来进行匹配
    -c 统计与模式匹配的数目
    -i 忽略大小写
    -n 显示匹配文本所在行的行号
    -v 反选,输出不匹配行的内容
    -r 递归匹配查找
    -A n after,除列出匹配行外,还列出后面的n行
    -B n before,除列出匹配行外,还列出前面的n行
    --color=auto 将输出的匹配项设置为自动颜色显示

    grep支持三种正则表达式引擎
    -E ERE,扩展正则表达式
    -G BRE,基本正则表达式
    -P PCRE ,perl正则表达式

    5.使用正则表达式:
    基本正则表达式BRE

    ...位置:查找/etc/group文件中以“shiyanlou”开头的行
    grep ‘shiyanlou’/etc/group
    grep '^shiyanlou' /etc/group

    ...数量:

    ...选择:

    完整的特殊符号及说明:

    6.使用扩展正则表达式ERE
    grep -E 或者用egrep

    ...数量:

    ...选择:

    其中.有特殊含义,需要转义

    7.sed流编辑器
    sed工具用于过滤和转换文本的流编辑器
    sed 参数 执行命令 file
    -n 安静模式,只打印受影响的行,默认打印输入数据的全部内容。
    -e 用于脚本中添加多个执行命令一次执行,在命令行中执行多个命令通常不需要加盖参数
    -f filename 执行指定filename文件中的命令
    -r 使用扩展正则表达式,默认为标准正则表达式
    -i 将直接修改输入文件内容,而不是打印到标准输出设备

    sed编辑器的执行命令--略

    8.awk文本处理工具--略

  • 相关阅读:
    国内10大前端团队网站
    可视化搭建前端工程
    Vue CLI环境变量和模式
    BetterScroll:可能是目前最好用的移动端滚动插件
    洛谷月赛
    CF438D The Child and Sequence
    P1447 [NOI2010]能量采集
    Cow Relays,过N条边的最短路
    Numerical Sequence(hard version),两次二分
    洛谷P3237 米特运输
  • 原文地址:https://www.cnblogs.com/xflyer/p/10422174.html
Copyright © 2011-2022 走看看