关于Perl里面正则表达式规范_基础教程

1,定界符
=~ m/there/;
=~ s/there/here/;
还有类型的定界符:
=~ /there/
=~ m#there#;
=~ s#there#here#;
=~ m(there);
=~ s(there)(here);
=~ m{there};
=~ s{there}{here};
=~ m[there];
=~ s[there][here];
=~ m,there,;
=~ s,there,here,;
=~ m.there.;
=~ s.there.here.;
=~ m|there|;
=~ s|there|here|;
=~ m'there';
=~ s'there'here';
2,修改符
修改符一般放在语句最后一个正斜杠(或者其他分隔符)的后面,修改符还可在匹配范式内定义,这是用(? 修改符)来实现的。
/x 允许在范式中加上注释和额外的空白字符,以提高程序的可读性。
/i 允许不分大小写的匹配范式。
/s 单行方式,决定了圆点 . 是否匹配换行符,使用了/s,圆点就匹配换行符,否则就不匹配。
比如:
#!/usr/bin/perl
use strict;
use warnings;
my $string = ".\n.";
print "The original string is: $string\n";
my $num = $string =~ s|(.)|#|sg;
print "$num occurences change, and be changed to: $string\n"; exit;
/m 多行方式,决定了脱字号 ^ 和美圆符 $ 是否匹配换行符,如果不用/s,^和$只能定位在字串的开始和结束处,它们并不匹配嵌入的换行符,这种情况等同于\A和\Z,否则不仅仅匹配字串的开始和结束,也匹配刚好处在嵌入换行符前后的一个位置。
/o 仅仅一次计算表达式的值
/e 将替代字符串作为一个表达式(仅仅在替代操作时有效)
/g 是一个全局修改符。另外,/g与while使用能在字串的所有匹配中进行遍历。修改符/G必须与/g一起使用,用来匹配前一个/g匹配的停止位置。

#!/usr/bin/perl
use strict;
use warnings;
my $string = "~32sda13dAZ.'sDa#!3_C-!";
print "The original string is: $string\n";
my $num = $string =~ s.\w.#.g;
print "$num occurences change, and be changed to: $string\n";
exit;
3,正则里一些特殊字符
() 将表达式结组
[] 寻找一组字符
\d 等于 [0-9]
\D 等于 [^0-9]
\w 等于 [0-9A-Za-z_]
\W 等于 [^0-9A-Za-z_]
\s 等于 [\f\n\r\t ]
\S 等于 [^\f\n\r\t ]
. 等于 [^\n]
4,关于一些特殊符号
\b 不属于空白字符,向前缩进一个字符
\t 属于空白字符,匹配制表符
\r 属于空白字符,匹配回车符
\a 不属于空白字符,匹配闹钟符
\e 不属于空白字符,匹配转义符
\033 不属于空白字符,匹配八进制符
\x1B 不属于空白字符,匹配十六进制符
\c[ 不属于空白字符,匹配控制字符
属于空白字符,匹配空格
属于空白字符,匹配制表符
\f 属于空白字符,匹配换页符
\n 属于空白字符,匹配换行符
\0 不属于空白字符,功能不详
\c 不属于空白字符,功能不详
\x 不属于空白字符,功能不详
5,注意正则里的选择符的特殊性
选择运算符是所有运算符中优先级最低的,这意味着它最后执行。
6,正则里的限定符的一些经典用法
限定符常常与一些字符或词联合使用
* 匹配任意数个;
+ 匹配一个或多个;
? 匹配零个或一个;
{n} 匹配 n 个;
{n,m} 匹配 n 至 m 个;
{n,} 匹配 n 和 n 个以上;
限定符贪婪好像与生俱有的。在缺省状态下,*或+限定符匹配满足正则表达式的一个范式的最大实例数。可用?号显式的规定限定符的不贪婪。如果问号放在另一个限制符之后(甚至另一个问号之后),都可以使限定符不贪婪。
7,声明与断言
首先注意声明的长度为 0;
Perl种有一组控制大小写和换码的声明:
\u 使下一个字母变大写;
\l 使下一个字母变小写;
\U 使文本的剩余字符变成大写;
\L 使文本的剩余字符变成小写;
\Q 会除字母之外的其他字符进行换码处理,直至遇到 \E 声明、常规表达式结束或者字串结束。
\A声明和脱字符号(^)匹配字串的开始;
\Z声明和美元符号($)匹配字串的结束或刚好在字串结束前的换行符;
\z 只匹配字串的结束;
\b 匹配一个单词(字)边界;
\B 匹配一个非单词(字)边界;
(?#text) 忽略括号内的注释文本;
(?:pattern) 与组一致,但匹配时不生成$1,$2;
(?imsx:pattern) 与组一致,但匹配时不生成$1,$2,在特定的风格有效期间,内嵌风格匹配修饰符;
(?=pattern) 前看声明,如果正则表达式在下一次匹配 pattern 风格,就开始匹配,而且不影响匹配效果。如/\w+(?=\t)/将匹配制表符是否恰好在一个字\w+后面出现,并且制表符不添加到$&的值中;
(?!pattern) 如果正则表达式在后面不匹配 pattern ,才会开始匹配。如/foo(?!bar)/,只有当出现 foo,并且后面不出现 bar 时才开始匹配;
(?<=pattern) 后看声明,只有在pattern已经匹配下面的表达式,并且不将 pattern 的结果放入$&变量中,才匹配下面的语句。如/(?<=\t)\W+/匹配制表符是否恰好在\W+前出现,但又不将制表符送到$&中;
(? (?[code]) 表示对 code 的使用是试验性的。如果返回真,就认为是与(?:pattern)断言同一行里的匹配。code 不插入变量。这个断言仅仅在 use re 'eval' 编译指示符时才有效;
(?>pattern) 如果类型锁定在当前位置,就使用单独的 pattern 匹配子字符串。如正则表达式/^(?>a*)ab/永远不会匹配,因为语句(?>a*)将匹配字符串开头所有的 a 字符,并删除与 ab 匹配的字符 a;
(!<=pattern) 非后看声明,与后看声明意思相反;
(!=pattern) 非前看声明,与前看声明意思相反;
(?(condition)yes-pattern|no-pattern) 条件表达式——条件语句或者是一个圆括号中的整数,或者是一个断言;
(?(condition)yes-pattern)
(?imsx) 嵌入风格匹配修饰符。当要把表达式修改符嵌入在变量中,然后把变量用在不指定自己的修饰符的一般规则表达式中;
(?-imsx) 这个断言很有用——后面带任何内容都会关闭修饰符,直到出现另一个嵌入的修饰符。
8,向后引用
Perl的正则表达式引擎允许使用前面匹配好的值,这些值叫做向后引用。
例如:
=~ m/(\w)\W*(\w)\W*(\w)\W*(\w)\W*\4\W*\3\W*\2\W*\1/;
=~ s/(\w)\W*(\w)\W*(\w)\W*(\w)/$4$3$2$1/;

时间: 2024-09-16 14:58:20

关于Perl里面正则表达式规范_基础教程的相关文章

perl 基本语法介绍_基础教程

一.数据类型(Data type): Perl 的数据类型大致分为四种:Scalar(变量).Scalar Array(数组).Hash Array(散列).References(指针),看起来虽少但用起来却绰绰有余.尤其在写Perl程序时可以不必事先宣告变量,这一点对刚学程序语言的人甚为方便,不过为了以后程序除错和维护方便,我建议你还是养成事先声明变量的习惯比较好. 1 Scalar(纯量变量): 纯量变量是Perl里最基本的一种数据型态,它可以代表一个字符.字符串.整数.甚至浮点数,而Per

PERL脚本 学习笔记_基础教程

1. chomp无参数时,使用默认参数,将对$_操作. 2. 数组@array..可用$array[number]引用.$#array..表示数组中索引数. 3. $!包含出错信息: 4. 默认打开文件句柄的方式是"<"即输入,">>"和">"区别就在于一个添加方式操作文件的. if(@ARGV < 2){ die "Not enough arguments\n"; } 5. select LOG

html页面head区域的编码书写规范_基础教程

今天我们简单的介绍一下head区域主要放置了内容.这里就不强调css和javascript了,这两者是大家所熟知的. head区一般必须加入的标识有:  公司版权注释 <!--- the site is designed by MrJin 03/2001 --->   网页显示字符集 简体中文: <meta http-equiv="content-type" content="text/html; charset=gb2312"> 繁体中文:

perl操作符详细说明_基础教程

一.算术操作符 :+(加).-(减).*(乘)./(除).**(乘幂).%(取余).-(单目负)  (1)乘幂的基数不能为负,如 (-5) ** 2.5 # error:  (2)乘幂结果不能超出计算机表示的限制,如10 ** 999999 # error  (3)取余的操作数如不是整数,四舍五入成整数后运算:运算符右侧不能为零  (4)单目负可用于变量: - $y ; # 等效于 $y * -1二.整数比较操作符 Table 3.1. 整数比较操作符 操作符 描述 < 小于 > 大于 ==

Perl内置特殊变量总结_基础教程

[ 文件句柄 ] $| 如果非零, 则在对当前选定的文件执行写或打印操作后强制清除缓冲区$% 当前选中文件句柄的当前页码$= 当前选中文件句柄的当前页面长度$- 当前选中文件句柄的页面剩余长度$~ 当前选中文件句柄的报表格式名称$^ 当前选中文件句柄的当前页眉格式名 [ 全局变量 ] $_ 默认的输入和模式搜索空间$@ 上一个 eval.do 或 require 函数产生的错误消息$/ 输入记录的分隔符, 默认为换行符(类似于 awk 中的 RS)$\ 打印函数的输入记录分隔符. 除非设置了 $

探索Perl的世界(更新到40集)-Perl视频教程_基础教程

Perl 的相比起来还是少.看视频,在入门时还是相当方便的,就象电影来看就好了.我基本 Superor 老师每出一集我都看了.希望大家也认真看看. 记的,学习时要多写,只能看明白,只有 5% 是你的,练习都做一做,就有 30% 是你的啦.其它的如果能根据教程,自己写出自己要的程序,才 80% 是你的. 再次感谢 Superor 老师. 注意下面的内容,如果加 .zip 可以直接下载的.例如:http://www.boobooke.com/v/bbk2869.zip 第1集:第一章 Perl的概述

perl 常用系统函数列表_基础教程

常用系统函数列表 指令:print语法:print Filehandle LIST说明:这个Filehandle可以看作在I(INPUT)/O(OUTPUT)之间的一个桥梁,可以利用FILEHANDLE来做出数据读入写出的动作.STDIN是代表从哪连输入数据,例如从电脑的键盘输入;STDOUT是代表从哪连输出数据;例如从电脑的屏幕输出;STDERR是代表从哪连输出错误的数据,例如从电脑的屏幕输出.而在PERL语言中有三个标准FILEHANDLE: 1.STDIN(标准输入):是代表STDIN的F

Perl语言入门三部曲 附电子书下载_基础教程

第一本.<Perl语言入门(Learning Perl)> Perl语言入门 第六版中文pdf扫描版(Learning Perl, 6th Edition) http://www.jb51.net/books/44237.html 第二本.<Intermediate Perl> 下载地址: http://www.jb51.net/books/58888.html 第三本.<精通Perl (Mastering Perl)> 下载地址: http://www.jb51.ne

Perl调用shell命令方法小结_基础教程

一.systemperl也可以用system调用shell的命令,它和awk的system一样,返回值也是它调用的命令的退出状态. 复制代码 代码如下: [root@AX3sp2 ~]# cat aa.pl#! /usr/bin/perl -w$file = "wt.pl";system("ls -l wt.pl");$result = system "ls -l $file";print "$result \n"; #输出命