博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Perl语言入门笔记 第七章 漫游正则表达式王国
阅读量:5253 次
发布时间:2019-06-14

本文共 2184 字,大约阅读时间需要 7 分钟。

=pod正则表达式(regular expression),在perl里面通常也叫做模式(pattern),是用来表示匹配或不匹配某个字符串的特征模板。	文件名通配与正则表达式是两个概念。grep指令:	$grep 'flint.*stone' chapter*.txt #查看chaper*.txt文件中,有哪行出现过flint且后面跟着stone	使用简单模式:	$_ = "yabba dabba doo";	if(/abba/)	{		print "Matched!\n";	}	有许多字符属于空白符,相应属性为space;	if(/\p{Space}/)	{		print "The string has some whitespace\n";	}	如果要匹配数字,可以用Digit属性:		if(/\p{Digit}/)		[			print "The string has digit.\n";		}	检查连续含有两个十六进制的字符:		if(/\p{Hex}\p{Hex}/) #\p表示匹配后面跟的属性的意思		{			print "The string has a pair of hex digits\n";		}		\P表示不匹配后面跟的属性		元字符: 元字符前面加上反斜线,元字符就失去了它原有的属性	.	匹配除\n外所有的字符,一个	匹配\需要一个\线来转义	简单的量词:	*	匹配前面的那个字符的0次或多次	.*	匹配任意多个字符(除\n外),俗称捡破烂(any old junk)	+	匹配一个或多个	?	匹配一个或零个	()	对字符串分组	/(fred)+/	匹配fredfredfred类的字符串		$_ = "abba"; #匹配'bb'	if(/(.)\1) #\1是反向引用	{	}	$_ = "yabba dabba doo";	if(/y(.)(.)\2\1/) #匹配'abba'	use 5.010;$_ = "aa11bb";	if(/(.)\g{1}11){}	#\g{N}写法use 5.010;$_ = "xaa11bb";if(/(.)(.)\g{-1}11/) { } #反向引用,相对于自己的位置择一匹配:	竖线|通常读作或,fred|barney|betty能匹配任何含有fred或者barney或者betty的字符串	/fred(|\t)+barney/	匹配fred和barney之间出现一次以上空格、制表符或两者混合的字符串。加号表示重复一次或更多。每次只要有重复,(|\t)就能匹配空格或制表符,在这两个名字之间至少要有一个空格或制表符。	/fred(+|\t+)barney/ 中间不是空格就是\t	/fred(and|or)barney/匹配含有fredandbarney或者fredorbarney字符集:	[a-zA-Z] [^adg] 匹配其中的一个,或除其中的一个	\h	匹配水平空白符	\v	匹配垂直空白符	\h+\v = \p{Space}	\R	匹配任意一种断行符,如\r\n还是\n	\w	匹配任意字符0-9a-zA-Z,下划线也是的反义简写:	[^\d] = [\D]	[^\w] = [\W]	[^\s] = [\S]	[\d\D]	匹配任意字符,包括换行	[^\d\D]	什么都不匹配		=cut

简单练习:

#!/usr/bin/perl -wuse strict;=pod#ex7_1while(1){	chomp(my $line = 
); ($line =~ /fred/) and print "$line\n"; }=cut=pod#ex7_2while(1){ chomp(my $line =
); ($line =~ /[Ff]red/) and print "$line\n"; }=cut=pod#ex7_3while(1){ chomp(my $line =
); ($line =~ /\./) and print "$line\n"; }=cut=pod#ex7_4while(1){ chomp(my $line =
); ($line =~ /^[A-Z][a-zA-Z]*[a-z]+[a-zA-Z]*/) and print "$line\n"; }=cut=pod#ex7_5while(1){ chomp(my $line =
); ($line =~ /(\S)\1/) and print "$line\n"; }=cutwhile(1){ chomp(my $line =
); ($line =~ /[\d\D]*wilma[\d\D]*fred[\d\D]*|[\d\D]*fred[\d\D]*wilma[\d\D]*/) and print "$line\n"; }system "pause";

转载于:https://www.cnblogs.com/v-BigdoG-v/p/7398617.html

你可能感兴趣的文章
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
PHP截取中英文混合字符
查看>>