Learn Perl 七~九章 正则表达式 要点整理
来源:互联网 发布:中文版音乐制作软件 编辑:程序博客网 时间:2024/05/21 17:02
Note: 这份整理不能用来直接学习,必须先读过原书。
/abba/ 匹配含有"abba"
. 匹配除了\n意外所有字符a* 匹配任意数量的a(包括0个)
a+ 匹配至少一个的a
a? 匹配一个或0个a
a{5,15} 匹配[5, 15]个a (低于5个不能匹配,超过15个能匹配,但是匹配15个)
a{5,} 匹配[5, 无穷]个a
a{5} 严格限制5个a
/abc|def|ghi/ 匹配含有abc或者def或者ghi
/(a+b)*/ 将a+b视为一个整体
/[a-z]/ 字符类,匹配a~z任意一个字母
/[^def]/ 匹配def三个字符之外的任意单个字符
\d =[0-9]
\w =[A-Za-z0-9_]
\s 匹配空白字符(5种:格式符、tab、换行符、回车符、空格符)= [\f\t\n\r ] (注意最后有空格)
之前都将模式放在一对正斜线里(//),这实际上是m//的简写。
m(fred), m<fred>, m{fred}, m[fred], m,fred,, m!fred!, m^fred^等都可以
修饰符:
/yes/i 不区分大小写
/a.b/s 使.能匹配任意字符
/a b/x 忽略模式中的空白(5种,同上)
/yes . no/isx 可以结合使用
锚定:
默认情况下,如果模式在字符串开头没能匹配上,它会顺着字符串下去,直到匹配上为止。如果使用了锚定(anchors)则可以要求模式在特定的位置进行匹配。
/^abc/ 匹配开头
/abc$/ 匹配结尾(忽略换行符)
/^\s*$/ 匹配空行 ?????????????????????????????????????????
词锚定
/\bfred\b/ 全字匹配fred
绑定操作符
if (/abba/) {} 默认对$_进行匹配,可以用 =~ 对指定字符串进行匹配。
$str=~/abba/ 与$str匹配是否含有abba
模式内的内插
/$str/ 匹配含有$str
匹配变量
括号()会引起正则表达式分配新的内存块
if(/(\S+) (\S+), (\S+)/) {
print "words were $1 $2 $3";
}
$1 $2 $3的顺序按照括号顺序,外括号优先
自动匹配变量
$& 上次匹配结果
$` 匹配成功前找到的字符串
$' 还未匹配的剩余部分
优先级(四级):
第一级: 括号()
第二级: 数量词
第三级: 锚定与序列
第四级: 或|
----------------------------------------------------------
使用正则表达式改变字符串
s///默认一次替换
最后加g
s/str1/str2/ str1被替换为str2
同样s///可以s###,若使用配对的字符,则s{}{},甚至s{}[]
/i,/x和/s也通用,且可写成/gixs,顺序无关
也可用=~改变默认的$_
大小写转换:
\U 要求之后全大写
\L 要求之后全小写
\E 终结\U or \L的影响
\u \l 影响下一个字符
顺序无关
\u\L or \L\u 首字母大写,其他小写。
split操作:
@field=split/separtor/,$str;
join操作
$str = join separtor, @field
m// 可在代码上下文中使用
my($first, $second, $third) =/(\S+) (\S+), (\S+)/;
my @words = ($text =~ /([a-z]+)/ig);
非贪婪数量词:
* + ? {} 是贪婪数量词,会进行最大限度的匹配,而非匹配到就返回
对于 yuanyin and lee is a couple. 使用/yuan.+lee/进行匹配:
首先找yuan,找到了之后找.+,会最大限度匹配,一直匹配到了行末couple.
然后找lee,发现已经结束了,而回退一个字符.+仍然匹配,因此回退一个字符找lee。
如果回退一个字符.+成立则回退一个字符,直到匹配到lee,或者回退字符导致.+不成立。
在数量词后加?,则成为非贪婪数量词,进行最小限度的匹配。
匹配多行文本:
/m
使用^与$锚定
非捕捉()--(?:string):出现括号只计数,不开内存。
- Learn Perl 七~九章 正则表达式 要点整理
- perl正则表达式中各种字符集的整理
- 正则表达式要点
- 正则表达式要点
- 正则表达式要点(简要)
- Perl正则表达式讲解
- Perl正则表达式
- Perl 正则表达式
- perl 正则表达式
- Perl 中的正则表达式
- Perl 中的正则表达式
- Perl中的正则表达式
- perl正则表达式
- Perl中的正则表达式
- Perl 中的正则表达式
- Perl 中的正则表达式
- perl中的正则表达式
- perl 正则表达式
- ACPI Tables
- 如何选择一个适合的解决方案
- IO包中的其他对象
- Android自定义View之一:初探实例
- 打印DataGridView数据,可以加眉头和页尾
- Learn Perl 七~九章 正则表达式 要点整理
- 嵌入式ARM移植之三:移植 linux-2.6.26 内核
- Linux I/O(输入和输出)
- MySQL 5 安装后无法启动 Start service 的解决办法
- 什么是流式文件
- quartz-2.0.2学习小记
- 如何使用eclipse和emulator debug Android source code(JNI以上部分)
- Java 使用Runtime.getRuntime.exec 和 ProcessBuilder 调用外部命令
- WIN XP能上网,win7不能上网解决方案