zoukankan      html  css  js  c++  java
  • 3.2.1 什么是正则表达式

        正则表达式是一种表示方式,让你可以查找匹配特定准则的文本,例如,“以字母 a 开头”。此表示法让你可以写一个表达式,选定或匹配多个数据字符串。
     
        很多的UNIX工具程序沿用某一种正则表达式形式来强化本身的功能。这里列举一部分例子:
    • 用来寻找匹配文本行的 grep 工具族:grep 与 egrep ,以及非标准但很好用的 agrep 工具。
    • 用来改变输入流的 sed 流编辑器( stream editor ),本章稍后将会介绍。
    • 字符串处理程序语言,例如 awk、Icon、Perl、Python、Ruby、Tcl等。
    • 文件查看程序(有时称为分页程序,pagers ),例如 more、page、与 pg ,都常出现在商用UNIX系统上,另外还有 less分页程序。
    • 文本编辑器,例如历史悠久的 ed 编辑器、标准的 vi 屏幕编辑器,还有一些插件(add-on)编辑器,例如 emacs、jed、jove、vile、vim 等。
     
        正因为正则表达式对于UNIX的使用是这么重要,所以花些时间把它们弄熟绝对不会错,越早开始就能掌握得越好。
     
        从根本上来看,正则表达式是由两个基本组成部分所建立:一般字符与特殊字符。一般字符指的是任何没有特殊意义的字符,正如下表中所定义的。在某些情况下,特殊字符也可以视为一般字符。特殊字符常称为元字符( metacharacter ),本章接下来的部分都会以 meta 字符表示。
     
     
        POSIX BRE 与 ERE 的 meta 字符
    字符 BRE/ERE 模式含义
    两者都可 通常用以关闭后续字符的特殊意义。有时则是相反地打开后续字符的特殊意义,例如 ( ... ) 与 { ... } 。
    . 两者都可 匹配任何单个的字符,但 NUL 除外。独立程序也可以不允许匹配换行字符。
    * 两者都可 匹配在它之前的任何数目(或没有)的单个字符。以ERE而言,此前置字符可以是正则表达式, .* 代表“匹配任一字符的任一长度”。以BRE来说, * 若置于正则表达式的第一个字符,不具任何特殊意义。
    ^ 两者都可 匹配紧接着的正则表达式,在行或字符串的起始处。BRE:仅在正则表达式的开头处具此特殊含义,ERE:置于任何位置都具特殊含义。
    $ 两者都可 匹配前面的正则表达式,在字符串或行结尾处。BRE:仅在正则表达式结尾处具此特殊含义,RER:置于任何位置都具特殊含义。
    [...] 两者都可 方括号表达式,匹配方括号内的任一字符。连字符(-)指的是连续字符的范围。^符号置于方括号里第一个字符则有反向含义:指的是匹配不在列表内的任何字符。作为首字符的一个连字符或是结束方括号(]),则被视为列表的一部分。所有其他的 meat 字符也为列表的一部分。房括号表达式里可能会含有排序符号、等价字符集、以及字符集。
     
     
     
    字符 BRE/ERE 模式含义
    {n,m } BRE 区间表达式,匹配在它前面的单个字符重现的次数区间。{n}指的是重现 n 次;{n,}则为至少重现 n 次,而{n,m}为重现 n 至 m 次。m的值必须介于0至255间
    ( ) BRE 将( 与 ) 间的模式存储在特殊的“保留空间”。最多可以将9个独立的子模式存储在单个模式中。匹配于子模式的文本,可以通过转移序列1至9,被重复使用在相同模式里,例如(ab).*1,指的是匹配于ab组合的两次重现,中间可存在任何数目的字符。
    BRE 重复在 方括号内第 n 个子模式至此点的模式。n为1至9的数字,1为由左开始。
    {n,m} ERE 与先前提及BRE的{n,m}一样,只不过方括号前没有反斜杠。
    + ERE 匹配前面正则表达式的一个或多个实例。
    ? ERE 匹配前面正则表达式的零个或一个实例。
    | ERE 匹配于|符号前或后的正则表达式。
    ( ) ERE 匹配于方括号括起来的正则表达式群。
     
    简单的正则表达式匹配范例
     
    表达式 匹配
    tolstoy 位于一行上任何位置的7个字母:tolstoy
    ^tolstoy 7个字母tolstoy,出现在一行的开头
    tolstoy$ 7个字母tolstoy,出现在一行的结尾
    ^tolstoy$ 正好包括tolstoy这7个字母的一行,没有其他的任何字符
    [Tt]olstoy 在一行上的任意位置中,含有 Tolstoy 或是 tolstoy
    tol.toy 在一行上的任意位置中,含有 tol 这3个字母,加上任何一个字符,再接着toy这3个字母。
    tol.*toy 在一行上的任意位置中,含有 tol 这3个字母,加上任意的0或多个字符,再继续 toy 这3个字母。
     
     
  • 相关阅读:
    常见寻找OEP脱壳的方法
    Windows内核原理系列01
    HDU 1025 Constructing Roads In JGShining's Kingdom
    HDU 1024 Max Sum Plus Plus
    HDU 1003 Max Sum
    HDU 1019 Least Common Multiple
    HDU 1018 Big Number
    HDU 1014 Uniform Generator
    HDU 1012 u Calculate e
    HDU 1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/avention/p/10306623.html
Copyright © 2011-2022 走看看