• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

寒假【perl语言学习脚本】8.1 8.2 8.3 8.4 8.5 8.6

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

#!/usr/bin/perl -w
while($_=)
{
if(/match/)
{
print "It is matched: <`<&>KaTeX parse error: Expected 'EOF', got '\n' at position 2: '\̲n̲";#自动捕获变量,&, $, $' } } #匹配到的结果放到$&里,匹配区段之前的内容会存到$里,而匹配区段之后的内容则会存到$'里,将三者依次连接

#若模式匹配的对象是$_的内容,只要把模式写在一对斜线(/)中就可以了,而模式本身就是一串简单的字符序列

if(/abba/){

print “it is matched!\n”;

}

#print和printf的区别?
#printf:可以自定义输出的模式,另外输出内容之后不自动换行
#print:输出内容之后自动换行,print 中不能使用%s ,%d 或%c;
#和say区别?都是打印,say自动加换行符
#say “hello”
#print “hello\n”
#是一样的,say方便不少,只是简单打印的时候不需要print \n

#正则匹配返回1,不匹配返回0
#+就表示重复0或多次 /world+/-----worlddddd
#/(world)+/------worldworldworld
#括号内的内容作为元字符,用反斜线后面加数字表示再次匹配:/(world)\3/表示匹配:worldworldworldworld共四次—反斜线和数字编号组成的
#/(hello)(world)\1\2/按前后顺序决定,匹配的应该是helloworldhelloworldworld
#/(hello) we love the (world)\2\2,it is a string/)匹配的-------hello we love the world,hellohelloworldworld

#择一匹配 |

#!/usr/bin/perl -w
while($= ){
chomp;
if (/a\b/)
{
print "it is matched: <`<&>KaTeX parse error: Expected 'EOF', got '\n' at position 2: '\̲n̲"; } } #绑定操作符=…
,绑定操作符告诉perl,拿右边的模式来匹配左边的字符串,而不是匹配KaTeX parse error: Expected group after '_' at position 1: _̲ #任何一个本地设定的字符编码…!";
while(defined(KaTeX parse error: Expected '}', got '#' at position 12: _=<FILE>)){#̲逐行读取文本 if (_=~ /(\w*a$)/){# +用于使前面的字符与后面的字符至少匹配一次,也可以任意次地进行匹配
print “it is matched: &lt;`&lt;&>$’”;
}
}
close FILE;

#!/usr/bin/perl -w
while()
{
chomp;
if($_ =~ /(\b\w*a\b)/ )#此处的模式在括号内使用一对\b单词边界锚位
{
print “It is Matched: &lt;`&lt;&>$’\n”;
print “$1 contains ‘$1’\n”;
}
else
{
print “No match: $_\n”;
}
}

#元字符
#字符类:单字符与数字

*----任何非空字符

.--------- 匹配任何除换行符外的任意字符 代表的是一个

[a-z0-9]—匹配集合中任意单个字符

[^a-z0-9]—匹配不在集合中才任意单个字符

\d-----匹配单个数字

\D----匹配非数字字符,等效于[^0-9]

\w----匹配数字型(字)字符 类似小d

\W----匹配非数字型(非字)字符 类似大D

#字符类:空白字符

\s 匹配空白字符,如空格,制表符和换行符

\S 匹配非空白字符

\n 匹配换行符

\r 匹配回车符

\t 匹配制表符

\0匹配空值字符

#字符类:锚定字符

\b 匹配字边界(不在[]中时)

\B 匹配非字边界

^ 匹配行首

$ 匹配行尾

\A 匹配字符串开头

\Z 匹配字符串或行的末尾

\z只匹配字符串末尾

\G 匹配前一次m//g

#字符类:重复字符

x? 匹配0或1个x

x* 匹配0或多个x

x+ 匹配1或多个x

x(m,n) 匹配m到n个x组成的值

#字符类:其他字符

\e 匹配ASCII

#!/usr/bin/perl -w
use 5.010;
while()
{
chomp;
if(/(?\b\w*a\b)/)#不捕获模式 ?: A named capture group:一个命名的捕获组(?pattern) \b 匹配字边界
{
print “Matched: |&lt;`&lt;&>KaTeX parse error: Expected 'EOF', got '\n' at position 3: '|\̲n̲"; print "'wo…+{word}’\n”; #新的输出行
}
else
{
print "No match: |KaTeX parse error: Expected 'EOF', got '\n' at position 3: _|\̲n̲"; } } #官方网址:…+是最近的捕获组,KaTeX parse error: Expected 'EOF', got '#' at position 13: +{xxx}是引用组名 #̲\w是你要匹配的东西 #自动捕…&里,匹配区段之前的内容会存到`里,而匹配区段之后的内容则会存到’里

#捕获变量的一些问题
#if(/(?:bronto)?saurus(steak|burger)/)#?:告诉bronto的圆括号只是为了分组才存在的,那么存在$1中的就是第二个括号里的steak|burger
#为了避免记忆KaTeX parse error: Expected 'EOF', got '#' at position 55: …内容会保存在特殊哈希%+里面 #̲其中的键就是在捕获时用的特殊标…+{name1}和$+{name2}
#?的作用是:去除+的贪婪模式

#!/usr/bin/perl -w
use 5.010;
while()
{
chomp;
if(
m!
(\b\w*a\b)
(.{0,5})
!x
)#此处的模式在括号内使用一对\b单词边界锚位
{
say “$1 $2”;
}
}

#$1: 某个以字母a结尾的英文单词
#$2: 后面接上的字符不超过5个
#/x和/s修饰符 s 匹配空白字符,如空格,制表符和换行符, x 忽略模式中的空白,允许在模式里加入空白符
#/x 在模式里随意加入空白,使其更易阅读

#perl里大部分标点符号是不算作单词的
#任意字符出现0-5次,五位及以下的任意字符串

#s
#Treat the string as single line. That is, change “.” to match any character whatsoever, even a newline, which normally it would not match.
#将字符串视为单行。也就是说,改变“.”匹配任何字符,甚至是换行符,通常它不匹配
#x
#单个/ x告诉正则表达式解析器忽略大多数空格,这些空格既不是反斜杠也不是在括号内的字符类中。您可以使用它将正则表达式分解为更易读的部分。

#!/usr/bin/perl -w
while(<>)
{
chomp;
if(/\s\z/)
{
print “$_#\n”; #井号在这里用作标示字符,表示行尾的位置。
}
}

\s 匹配空白字符,如空格,制表符和换行符

\z只匹配字符串末尾


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap