1.关于本文 1.关于本文 1.关于本文 1.关于本文
就像Caché模式匹配一样,正则表达式也可以在Caché中用来识别文本数据中的模式--只是表达能力更强。本文简要介绍了正则表达式,以及在Caché中如何使用它。这里提供的信息基于各种来源,最值得拜读的是Jeffrey Friedl的《掌握正则表达式》一书,当然还有Caché在线文档。本文无意讨论正则表达式的所有可能性和细节。如果你想了解更多,请参考第5章中列出的信息来源。
使用模式进行文本处理有时会变得很复杂。在处理正则表达式时,我们通常有几种实体:我们正在搜索模式的文本、模式本身(正则表达式)和匹配(文本中与模式匹配的部分)。为了便于区分这些实体,本文档中使用了以下约定。
文本样本以单色字体单独列出,不加引号。
This is a "text string" in which we want to find "something".
除非不明确,否则正文中的正则表达式会以灰色背景显示,如本例。\".*?\".
需要时用不同的颜色突出显示匹配。
这是一个"text string",我们要在其中找到"something"。
代码样本会显示在如下的文本框里:
set t=" This is a ""text string"" in which we want to find ""something "
set r="\"".*?\"""
w $locate(t,r,,tMatch)
2.一些历史(和一些小事)。
在20世纪40年代初,神经生理学家开发了人类神经系统的模型。几年后,一位数学家用一种代数来描述这些模型,他称之为"正则集"。这种代数的符号被命名为"正则表达式"。
1965年,正则表达式第一次在计算机的范畴内被提及。随着qed,一个作为UNIX操作系统一部分的编辑器,正则表达式开始传播。该编辑器后来的版本提供了一个命令序列g/正则表达式/p(全局、正则表达式、打印),在所有文本行中搜索匹配的正则表达式并输出结果。这个命令序列最终成为独立的UNIX命令行程序"grep"。
今天,许多编程语言都存在正则表达式(RegEx)的各种实现(见3.3节)。
3.Regex 101 3.Regex 101 3.Regex 101 3.Regex 101
就像Caché模式匹配一样,正则表达式也可以用来识别文本数据中的模式--只是表达能力更强。下面的章节概述了正则表达式的组成部分,它们的评估和一些可用的引擎,然后在第4章中详细介绍如何使用。
3.1.正则表达式的组成部分 3.1.正则表达式的组成部分 3.1.正则表达式的组成部分 3.1.正则表达式的组成部分
3.1.1.Regex元字符 3.1.1.Regex元字符 3.1.1.Regex元字符 3.1.1.Regex元字符 3.1.1.Regex元字符 3.1.1.Regex元字符
以下字符在正则表达式中具有特殊意义。
. ( ) [ ] \ ^ $ |
如果你需要将它们作为字面数使用,你需要使用反斜杠来转义。你也可以使用 \Q <literal sequence> \E显式指定字面序列。
3.1.2.文字
普通文本和转义字符被视为字面,例如:。
|
abc |
|
换页 |
|
换行 |
|
回车 |
|
标签 |
|
八进制数 |
|
十六进制数 |
3.1.3.锚
使用锚点,你可以匹配文本/字符串中的位置ÿ