zoukankan      html  css  js  c++  java
  • 第3章 正则表达式1

    1.正则表达式基础

    正则表达式:由一串字符和元字符构成的字符串,简称RE(Regular Expression),主要功能是文本查询和字符串操作。

    元字符(metacharacters):用来阐释字符表达式意义的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。

    注:a、b、2等字符属于普通字符,普通字符可以按照字面意思理解,如:a只能理解为英文的小写字母a,没有其他隐藏含义。而*、^、[]等元字符,Shell赋予了它们超越字面意思的意义,如:*符号实际上却表示了重复前面的字符0次或多次的隐藏含义。

    image

    上图描述了正则表达式用于数据流处理的过程,完成数据过滤,将不满足正则表达式的数据拒绝掉,剩下与正则表达式匹配的数据。

    2.正则表达式中元字符集合及其意义:

    符号

    意义

    *

    0个或多个在*字符之前那个普通字符

    .

    匹配任意字符

    ^

    匹配行首,或后面字符的非

    $

    匹配行尾

    []

    匹配字符集合

    转义符,屏蔽一个元字符的特殊意义

    <>

    精确匹配符号

    {n}

    匹配前面字符出现n次

    {n,}

    匹配前面字符至少出现n次

    {n,m}

    匹配前面字符出现n次与m次之间

    1 *符号

    hel*o: *符号前面的普通字符是l,*字符就表示匹配l字符0次或多次,如字符串helo、hello、hellllllo都可以由hel*o来表示

    2 .符号

    …73.表示前面三个字符为任意字符,第4和第5个字符是7和3,最后一个字符为任意字符,如xcb738、4J973U都能匹配上述字符串

    3 ^符号

    ^cloud表示匹配以cloud开头的行

    4 $符号

    micky$表示匹配以micky结尾的所有行

    ^$ 表示空白行

    5 []匹配字符

    [a-]匹配所有小写字母

    [^a-c]匹配不在a~c中的所有字符(^在此表示取反)

    6 符号

    .

    7 <>符号

    <the> 精确匹配单词the,them, they等不匹配

    8 {}系列符号

    {n}:匹配前面字符出现n次,如 JO{3}B 匹配JOOOB

    {n,}:匹配前面字符至少出现n次,如JO{3,}B匹配JOOOB、JOOOOB、JOOOOOB等字符串

    {n,m}:匹配前面字符出现n次与m次之间,如JO{3,6}B匹配JOOOB、JOOOOOOB等字符串

    [a-z] {5}:匹配5个小写英文字母,比如hello、house等

    3.正则表达式的扩展

    符号

    意义

    ?

    匹配0个或1个在其之前的那个普通字符

    +

    匹配1个或多个在其之前的那个普通字符

    ()

    表示一个字符集合或用在expr中

    |

    表示“或”意义,匹配一组可选的字符

    1 ?符号

    JO?B匹配O字符0次或1次,即JOOB,JOB

    2 +符号

    S+EU匹配S1次或任意次,如SSEU,SSSSEU。但不能SEU

    3 () 和|字符

    r(e|a)d表示在字符e,a选择任意一个,即red、rad

    3.通配

    1. 通配(globbing)是:把一个包含通配符的非具体文件名扩展到存储在计算机、服务器或者网络上的一批具体文件名的过程。

    2. 最常用的通配符包括正则表达式元字符:?、*、[]、{}、^等,通配符与元字符意义不完全相同:

    • *符号不再表示其前面字符的重复,而是表示任意位的任意字符;
    • ?字符表示一位的任意字符;
    • ^符号在通配中不代表行首,而是代表取反意义。

    ls -l *.awk表示列出以.awk结尾的文件的信息;

    ls -l 0?.pem表示列出以0开头、后面为一个字符且结尾为.pem的文件信息;

    ls -l [a-h]*.[^awk]*表示列出以a~h开头,不以.awk结尾的文件。

  • 相关阅读:
    [gym102832J]Abstract Painting
    [atARC070E]NarrowRectangles
    [atARC070F]HonestOrUnkind
    Cupid's Arrow[HDU1756]
    Surround the Trees[HDU1392]
    TensorFlow-正弦函数拟合
    某新版本不兼容老版本代码的语言的一点基础了解
    TensorFlow安装
    离散快速傅里叶变换
    2016"百度之星"
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/5568409.html
Copyright © 2011-2022 走看看