Perl 学习笔记-正则表达式基础篇
1.Perl中的正则表达式
在Perl中叫做模式, 是一个匹配(或不匹配)某字符串的模板, 是一种小程序, 对于一个字符串, 要么匹配, 要么不匹配.
使用简易模式: 将模式写在一对正斜线(/)中即可.
2.元字符
. 匹配非换行符 \n 的任何单字符, 需要注意的是转义字符如 \t 算做一个字符. 匹配 . 应该使用 \.
* 匹配前面的内容0次或多次, 使用 .* 表示匹配任意单字符任意次(这种模式也称为捡破烂模式)
+ 匹配前面的内容至少1次
? 匹配前面的内容至多1次
3.模式分组
使用圆括号 () 来分组, 它也是一个元字符.
分组可以实现反向引用, 如 \1 就是在使用第一个分组, \2 使用第二个分组 如: /(.)\/ 表示匹配连续2个相同的字符, 使用 /(.)(.)\\/ 可以得到4个字符的回文串; 分组的依据是左括号从左到右的序号, 从1开始, 如连续4个字符回文串也可以写作 /((.)(.)\\)/
分组编号的处理: Perl的原则是贪心取最大值, 所以\111 是第111号组, 如果只是想用\1, 而且在后面匹配字符"11",那就会冲突; 可以使用\g{N}来避免, 其中当N为正数时, 表示从左到右的第N个组, 当为负数时, 表示相对于当前从右往左数的第N个组.
4.选择匹配
使用符号 | , 只要在多个模式中有一个匹配即可, 由于一个模式要么匹配,要么不匹配, 一个字符串一般只匹配一个模式, 所以没有 类似于取反和求交集的逻辑操作.
5.字符集
定义: 指一串可能出现的字符集合, 写在 [] 中表示, 它只匹配单个字符, 但是可以使字符集中的任何一个; 如 [a-cw-z] [a-zA-Z0-9_]
简写: [-] <=> \d [A-Za-z0-9_] <=> \w [\f\t\n\r ] <=> \s #主要\r后面有一个空格
反义简写: [^\d] [^\w] [^\s] 分别表示非数字, 非单词字符, 非空白符; 对应等价于: \D \W \S
注意: ^ 在字符集中才表示反义简写, 但是在模式中表示开头, 结尾对应 $ , 如 /^perl/ 表示以perl开头的字符串
6.正则表达式使用
匹配:m/<regexp>;/ (还可以简写为 /<regexp>;/ ,略去 m)
替换:s/<pattern>;/<replacement>;/
转化:tr/<pattern>;/<replacemnt>;/
符号: =~ 表示匹配, !~ 表示不匹配
$roger = "AABCDEF";
$Roger = "AABCDEF";
$count = $roger =~ tr/A/H/c; # /c表示将不匹配的字符替换, 同理有/d表示把所有匹配的字符全部替换
$count2 = $Roger =~ tr/A/H/; # 将匹配的字符替换,省略了/d 即: tr/A/H/d;
print $count."\t".$roger."\n"; #5 AAHHHHH
print $count2."\t".$Roger."\n"; #2 HHBCDEF
$roger = "AABCDEF";
$count = $roger =~ tr/A/H/ds; # /s表示要替换的字符串中如果持续连续两个相同字符,就去掉冗余的
print $count."\t".$roger."\n"; #2 HBCDEF
2种用法:
$roger = "AABCDEF";
$count = $roger =~ tr/A//; # 等价于tr/A/A/; 统计模式出现的次数, 不会改变原串
print $count."\t".$roger."\n"; #2 AABCDEF
$count = $roger =~ tr/[A-Z]/[a-z]/; #替换成小写
print $count."\t".$roger."\n"; #7 aabcdef
可以在替换的时候使用反向引用 s/(word1)(word2)/$$/ 这样可以交换字符串的word1和word2,注意后面是$2 $1
Perl 学习笔记-正则表达式基础篇的更多相关文章
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- Python学习笔记之基础篇(-)python介绍与安装
Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...
- mysql学习笔记之基础篇
数据库学习之基础篇 ① 开放数据库互连(Open Database Connectivity,ODBC ② 结构化查询语言(Structured Query Language) ③ 进入mysql:M ...
- java学习笔记之基础篇
java选择语句之switch //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...
- Git学习笔记:基础篇
git可以说是所有开发者出开发语言之外的最基本的基本功了,熟悉git可以方便的进行代码版本控制,以及与其他开发者进行合作开发.本文内容是我以往学习git时做的笔记,主要是关于git最基本的操作,但 只 ...
- Scala学习笔记--正则表达式基础知识、如何在scala内使用
正则表达式语法:https://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx 基础知识:正则表达式30分钟入门教程 http://www. ...
- PERL学习笔记---正则表达式的应用
使用m//匹配 //这是m//(模式匹配)的一种简写.同qw//操作一样,可以使用任何成对的分隔符.因此,可以使用m(fred), m<fred>, m{fred}, m[fred],或者 ...
- vue学习笔记之基础篇
本文主要记录学习vue的一些基础内容及常用知识点的记录. 1.搭建脚手架 vue init webpack vue-demo 初始化一个使用webpack打包的vue项目 npm install 安装 ...
- perl学习笔记——正则表达式
正则表达式 简单模式:匹配$_中的内容,只需要将模式写在一对斜线(/)中就可以了. 如:#!/usr/bin/env perl use 5.010; $_="yabba dabba doo& ...
- Python 学习笔记(基础篇)
背景:今年开始搞 Data science ,学了 python 小半年,但一直没时间整理整理.这篇文章很基础,就是根据廖雪峰的 python 教程 整理了一下基础知识,再加上自己的一些拓展,方便自己 ...
随机推荐
- windows 安装redis
git :https://github.com/ServiceStack/redis-windows 备份地址:https://gitee.com/liuq1991v/redis-for-window ...
- 初学者手册-IDEA中的Git
1.Git的更新.提交.还原 IDEA中Git的更新.提交.还原方法 2.设置Git的提交方式为http 3.
- 阿里云专有网络下一键安装RouterOS-ROS系统
1.阿里云环境centos6.9 x64: 内网网卡为eth0 阿里云的linux下硬盘名称为/dev/vda 注意阿里云的安全组建议开放任意协议和端口,任意IP允许访问 今天测试阿里云2C4G的死活 ...
- Docker - 记录在window 上的一些“坑”
前言 由于领导要在超极本上面演示一些东西,所以决定在window平台上面使用docker,于是乎,便有了下面的一些故事... CPU / Memery 的总体设置 众所周知,在Linux上面使用doc ...
- python操作csv
# -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件的写入(按行写入) import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很 ...
- 手把手教你使用node-inspector调试nodejs
最近再看nodejs,这个东西是运行在服务端的,也就是说我们在客户端看不到相应的js代码,那么怎么调试了?目前主流的方法有三种.第一是采用node-inspector.第二种采用nodejs内置的调试 ...
- Python实践练习:电话号码和 E-mail 地址提取程序
题目: 假设你有一个无聊的任务,要在一篇长的网页或文章中,找出所有电话号码和邮件地址.如果手动翻页,可能需要查找很长时间.如果有一个程序,可以在剪贴板的文本中查找电话号码和 E-mail 地址,那你就 ...
- 8.Redis 数据备份与恢复
转自:http://www.runoob.com/redis/redis-tutorial.html Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下 ...
- POI-Excel表格导入和导出
ExcelWriter /** * @author zuzhilong * @date 2013-10-10 下午08:04:02 * @desc 生成导出Excel文件对象 * @modify * ...
- 跟我学算法-Logistic回归
虽然Logistic回归叫回归,但是其实它是一个二分类或者多分类问题 这里的话我们使用信用诈骗的数据进行分析 第一步:导入数据,Amount的数值较大,后续将进行(-1,1)的归一化 data = p ...