Perl中的匹配(六)
在Perl中,匹配的定界符如果是双斜线//,可以直接使用双斜线完成匹配操作。
如果特定条件下需要改变定界符,如改为{},[]等。需要加入m,m{},m[]等。
m%^http://%
默认的模式匹配对象是自动化变量$_,如果要指定匹配对象,可以使用绑定操作符=~。
my $some_other = "I have a Dream";
if($some_other =~ /\brub/); ##用右侧的模式对左侧的对象进行匹配。
模式匹配修饰符:
/i表示大小写无关的匹配。
/s表示元字符"."可以匹配到换行符。
/x表示原匹配对象中的空白符无效,我们可以随意增加分割用的空白符,
对之前的空格可以使用\s字符集来表示。
修饰符/a表示用ASCII码的方式解释对象中的字符,/u表示用unicode的方式来解释对象中的字符。
锚位修饰符:
\A表示字符串的绝对起始位置--行首。
m{\Ahttps:?://}i;
\z表示字符串的绝对结束位置--行尾(\n之后)。
脱字符(^)表示行首的首锚位,行尾的尾锚位($),/m主要针对这两个锚位修饰符,
使得他们既可以得到行首行尾锚位。又可以锚位字符串首位
\Z表示行尾锚位,不同的是允许之后可以有换行符。
\b表示单词锚位。
/\bfreb\b/;
捕获变量与捕获组中的反向引用相对用:
默认使用$1,$2这样的变量来表示,变量内部存储最近一次成功匹配到的值。
$_ = "Hello there, neighbor";
if(/(\S+) (\S+) (\S+)/) {
print "words were $1,$2,$3 \n"; }
自定义命名捕获变量和关闭捕获。
if(/(?:bronto)?saurus (steak|burger)/) ##?:表示关闭捕获功能,不会产生$1;
print "I saw $1"; ##输出steak和burger的捕获值。
if($names =~m/((?<name1>\w+) (and|or) (?<name2>\w+) \g{name1})/)
##在该条语句中直接应用反向引用,在下一条语句中使用引用变量。
print "I saw $+<name1>";
自动捕获变量的存储,经过匹配后的数据,可以分为三部分:
匹配区段之前的字符:可以用$`或${^PREMATCH}
匹配的字符:可以用$&或者$(^MATCH)
匹配之后的字符:可以用$'或者$(^POSTMATCH)
Perl中的匹配(六)的更多相关文章
- Perl中的正则表达式
转自:http://c20031776.blog.163.com/blog/static/684716252013624383887/ Perl 程序中,正则表达式有三种存在形式 分别是 (1 模式匹 ...
- Perl中的替换(七)
在Perl中使用s///进行替换操作,与m//进行查找操作类似. s/with (\w+)/against $1's team/; ##第一个双斜线,表示被替代的文本.第二个双斜线,表示将替 ...
- perl中的grep函数介绍
grep函数 (如果你是个的新手,你可以先跳过下面的两段,直接到 Grep vs.loops 样例这一部分,放心,在后面你还会遇到它) <pre>grep BLOCK LISTgrep E ...
- 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数
我们在linux常常用到一个程序需要加入参数,现在了解一下 perl 中的有关控制参数的模块 Getopt::Long ,比直接使用 @ARGV 的数组强大多了.我想大家知道在 Linux 中有的参数 ...
- Perl中的正则表达
前几天用到了Perl语言,主要看了一下Perl中的正则表达式,在各种网页语言中,正则表达式在处理字符串的时候十分有用,所以这里就简单说一下在Perl中正则表达式的应用. 先上代码 #!/usr/bin ...
- 在Perl中使用Getopt::Long模块来接收用户命令行参数
我们在linux常常用到一个程序需要加入参数,现在了解一下perl中的有关控制参数的函数.getopt.在linux有的参数有二种形式.一种是–help,另一种是-h.也就是-和–的分别.–表示完整参 ...
- smix到底是个啥?Perl的正则表达式匹配模式
最近在研究一个perl项目,临时学习了一下perl语法,强行看项目源码.因为总是见到各种正则表达式后面接smxi之类,虽然知道是匹配模式,但脑子里毫无概念.所以特地去学习了一下. 以上为背景. Per ...
- 【转载】Perl中字符串编码的处理
在 Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串, perl管它叫string. 也就是说: Perl只熟悉两种编 ...
- 【转】perl中尖括号运算符(<>)使用说明
perl中尖括号运算符的用途分享,这里简单介绍下,方便需要的朋友 perl中<>运算符可以有如下的用途: 1)如果尖括号中间是文件句柄,尖括号运算符允许你读取文件句柄,比如<STDI ...
随机推荐
- android通过pc脚本执行sqlite3脚本
最近在调研市面上的一些android db框架,需要经常重复的输入一堆比如 adb shell cd /data/data/com.example.testandroiddb/databases sq ...
- hdu1231最大连续子序列
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1231 #include<iostream> #include<cstdio> ...
- Mac废纸篓 不能完全清空的有效解决方法
摘自:http://www.neonan.com/articles/5582 对于苹果用户来说, 可能都会遇到过这样的情况(尽管这种情况是不常出现的!), Mac OS X系统突然出现一些顽固的文件家 ...
- 树莓派连接wifi
使用树莓派,通过无线网卡连接wifi,再通过远程桌面或者ssh的连接树莓派比较方便,本文记录树莓派wifi如何设置. 参考链接: http://www.jianshu.com/p/b42e8d3df4 ...
- 在CentOS下企图整合Apache和Tomcat依然失败
环境: 64位CentOS Linux version 2.6.32-431.el6.x86_64 CentOS release 6.5 (Final) Apache/2.2.15,mod_jk/1 ...
- iis7.5应用程序池模板永久性缓存初始化失败解决方法
错误: 针对应用程序池的模板永久性缓存初始化失败,这是由以下错误导致的: 无法为应用程序池创建磁盘缓存子目录.数据可能包含其他错误代码. 解决办法如下: 网上搜索的答案全都是修改3个目录的权限,给II ...
- POJ1043问题描述
Description The FBI is conducting a surveillance of a known criminal hideout which serves as a commu ...
- RouterOS软路由常用命令
修改用户密码 [admin@MikroTik]>/user #进入操作路径 [admin@MikroTik]/user>prin ...
- [3D]绘制线
数据实体: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy ...
- my ambition
学好java基础,不用学swing.学完java之后学my circle,之后学jsp,装好linux系统,天天打代码,在当寒假之前一定要学完并熟练运用java.java scrip,straw pu ...