加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

3.2.1 什么是正则表达式

发布时间:2020-12-14 06:10:28 所属栏目:百科 来源:网络整理
导读:? ? 正则表达式是一种表示方式,让你可以查找匹配特定准则的文本,例如,“以字母 a?开头”。此表示法让你可以写一个表达式,选定或匹配多个数据字符串。 ? ? ? 很多的UNIX工具程序沿用某一种正则表达式形式来强化本身的功能。这里列举一部分例子: 用来寻找
? ? 正则表达式是一种表示方式,让你可以查找匹配特定准则的文本,例如,“以字母 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组合的两次重现,中间可存在任何数目的字符。
n 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个字母。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读