#!/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:
‘
<
`<
‘<&>$’”;
}
}
close FILE;
#!/usr/bin/perl -w
while()
{
chomp;
if($_ =~ /(\b\w*a\b)/ )#此处的模式在括号内使用一对\b单词边界锚位
{
print “It is Matched:
‘
<
`<
‘<&>$’\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: |
‘
<
`<
‘<&>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”; #井号在这里用作标示字符,表示行尾的位置。
}
}