10、正则表达式与扩展正则表达式详解

正则表达式与扩展正则表达式详解

1. 引言

在编程领域,我们常听到“正则表达式”这个术语。不过,实际使用的“正则表达式”和理论上的有所不同,实际应用中的“正则表达式”通常被称为正则表达式(regex)。正则表达式在众多环境中广泛应用,像 Perl、Python、Awk、egrep、lex、vi、emacs 等。它的发展受到理论正则表达式的影响,例如 Lex 中的正则表达式就和理论正则表达式相似,但在其他很多环境中,正则表达式差异较大。

如今许多正在使用的正则表达式能够表达比正则语言更大的语言族。比如,Perl 正则表达式可以表达 $L_1 = {a^nb a^n | n \geq 0}$ 和 $L_2 = {ww | w \in {a, b}^ }$,但无法表达语言 $L_3 = {a^n b^n | n \geq 0}$。证明一个语言能否用正则表达式表达,情况有所不同。证明一个语言可以用正则表达式表达相对容易,例如 $L_1$ 可以用 Perl 正则表达式 $(a^ )b\1$ 表达,$L_2$ 可以用 $((a|b)^*)\1$ 表达;但证明一个语言不能用某些工具表达通常比较困难,比如证明 $L_3$ 不能用 Perl 正则表达式表达。因此,对正则表达式进行形式化处理很有必要。

2. 正则表达式与扩展正则表达式的基本定义
2.1 字符集定义

设 $\Sigma$ 是所有可打印字母的有序集合,但以下字母前面需加转义字符 \:(, ), {, }, [, ], $, |, \, ., ?, *, +。此外,$\Sigma$ 还包括 \n 和 \t,分别表示换行符和制表符。

2.2 正则表达式的定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值