声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
1、语法格式:
$字符串变量名!~tr/<pattern>/<replacemnt>/
<pattern>为需要替换的匹配模式串,<replacement>为替换的字符串。 把符合 <pattern>模式的字符串转换为 <replacement>。
2、示例:
1) 将小写字母全部转成大写
#perl4-6.pl
my $zmb="abcde";
$zmb!~tr/[a-z]/[A-Z]/;#将小写转换成大写
print $zmb;
输出结果如下:
ABCDE
2) 简单加密数字。
#perl4-7.pl
#简单加密数字,0加密成e,1加密成f,2加密成g...以此类推
my $passnum=<stdin>;
$passnum!~tr/[0-9]/[e-n]/;#将数字转换成字母,实现简单加密
print "\n";
print $passnum;
运行后,我们随意输入一串数字:834235902
输出简单加密的信息:mhighjneg
1. 捕捉正则变量
我们使用模式串匹配字符串时,有时需要捕捉匹配到的字符串。
使用$数字的形式表示匹配到的正则变量,括号匹配顺序为匹配模式串从左至右。$1代表第1对括号匹配到的字串,$2代表第2对括号匹配到的字串,$3代表第3对括号匹配到的字串,以此类推。
use 5.010;
my $names='deep and future';
if ($names=~m/(\w+) (and|or) (\w+)/){
#2个(\w+)分别匹配and前和and后的字符串(不包括空格)
say "我获得了$1 and $3";
# future不被$2匹配,因为一个括号代表可捕捉位置,#$2模式串为and|or
}
输出: 我获得了 deep and future
再看一个更复杂的例子:
#perl4-8.pl
use 5.010;
my $names='Hello,Beijing';
if ($names=~m/(\w+)(,)(\w+)/){
#2个(\w+)分别匹配逗号前和逗号后的字符串(不包括空格),匹配位置分别为$1和$3
say "我获得了$1 and $3"; #$1为 Hello ,$3为 Beijing
}
#注意下面这次匹配,我们把逗号前的字符串和逗号放在一对括号内
if ($names=~m/((\w+)(,))(\w+)/){
#我们从左到右开始解读模式串((\w+)(,))(\w+)
#首先遇到一个左括号,我们找到它对应的右括号
#发现遇到的第一对括号内容为 ((\w+)(,))
# 接着寻找遇到的第二对括号 (\w+)
#然后是第三对括号 (,)
#最后是第四对括号 (\w+)
say "我获得了$2 and $4"; #$2为 Hello ,$4为 Beijing
}
输出结果如下:
我获得了Hello and Beijing
我获得了Hello and Beijing
使用$数字的形式表示匹配到的正则变量,括号匹配顺序为匹配模式串从左至右。$1代表第1对括号匹配到的字串,$2代表第2对括号匹配到的字串,$3代表第3对括号匹配到的字串,以此类推。
分享到:
相关推荐
Perl 5引擎的正则表达式功能强大且灵活,其他如.NET和JDK的正则库虽然相似,但也有细微差别。 在正则表达式中,有一些字符具有特殊含义,被称为元字符,包括:[ ] \ ^ $ . | ? * + ( )。如果要匹配这些字符本身,就...
在IT领域,文本处理是日常工作中不可或缺的一部分,而grep、sed、awk和perl这四个工具在处理文本时都广泛地使用了正则表达式。它们各自有着不同的特性和适用场景,理解它们之间的差异有助于我们更高效地进行文本操作...
Perl兼容正则表达式解析库,本资源包是作者制作的静态库,版本为7.8。使用VC6在WinXp下编译通过。使用时请将pcre.h放到VC的include目录下。
11. **正则表达式引擎**:不同的编程语言或工具可能使用不同的正则表达式引擎,如Perl兼容正则表达式(PCRE)、JavaScript的正则表达式等,它们可能存在细微的语法差异。 通过学习《正则表达式必知必会》,读者不仅...
许多语言,包括 Perl、PHP、Python、JavaScript 和 JScript,都支持用正则表达式处理文本。 句点符号 --------- 句点符号“.”是正则表达式中最基本的元字符之一,它匹配所有字符,包括空格、Tab 字符甚至换行符。...
正则表达式是 Python 中的一种强大的文本匹配工具,提供了与 Perl 语言类似的匹配操作。该模块提供了 Unicode 字符串和 8 位字节串两种类型的匹配操作,但它们不能混用。在使用正则表达式时,需要注意 Unicode 字符...
从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,同时也支持 Perl 的正则表达式规则。 正则表达式的组成 ----------------- 正则表达式由一个或多个...
5. **正则表达式引擎的工作机制** 正则表达式引擎分为文本导向(DFA)和正则导向(NFA)两类。本文主要讨论正则导向的引擎,因为它们支持更高级的功能,如“惰性”量词和反向引用。正则导向引擎在匹配过程中会寻找最...
DEELX 将这种功能移植到了C++环境中,使得开发者无需离开他们熟悉的编程语言就能利用Perl正则表达式的强大之处。这包括但不限于以下关键特性: 1. **元字符**:DEELX 支持各种元字符,如 `.` (匹配任何非换行符的...
### Perl正则表达式详解 #### 一、正则表达式的三大原则 正则表达式在Perl中的应用广泛,主要用于模式匹配、文本替换以及字符转换。掌握正则表达式的运用,能够极大地提升文本处理的效率和灵活性。以下是正则...
Java正则表达式遵循Perl5的语法,包括元字符(如`.`, `^`, `$`, `*`, `+`, `?`, `{}`, `[]`, `\`, `|`, `(`, `)`)、预定义字符类(如`\d`, `\w`, `\s`)以及量词(如`*`, `+`, `?`, `{n}`, `{n,}`, `{n,m}`)等。 *...
这个库名为PCRE(Perl Compatible Regular Expressions),正如其名,它与Perl语言中的正则表达式语法高度兼容,提供了丰富的功能和强大的匹配能力。PCRE2-10.31是该库的一个具体版本,包含了一系列头文件和库文件,...
一、Perl正则表达式基础 Perl的正则表达式由一系列字符和元字符组成,它们共同构成一个模式,用于在字符串中查找匹配的模式。例如,`\d`代表数字,`.`代表任何字符,`*`表示前一个字符可以出现零次或多次。`^`表示...
计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的...例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
- **Perl兼容正则表达式(PCRE)**:Perl语言的正则表达式实现,被广泛应用于PHP、Python等多种编程语言中。 - **Java中的正则表达式**:Java提供了java.util.regex包来支持正则表达式的使用。 - **JavaScript中的正则...
Perl正则表达式是用于文本处理的强大工具,被广泛应用于各种脚本编程任务中,包括数据验证、字符串替换、模式匹配等。本文档旨在为用户提供一个快速查阅Perl正则表达式的指南,包含了基本的特殊字符、元字符、锚点、...
Perl正则表达式是Perl语言中的一个重要组成部分,用于文本匹配、搜索和替换操作。它们是强大的工具,能够处理复杂的字符串模式。以下是对Perl正则表达式的一些关键知识点的详细解释: 1. **基本匹配**: - `\d`:...
本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。 本书自第1 版开始着力于教会读者“以正则表达式来思考”,来让读者...