乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
perl 0.05 正则表达式/文本处理
2016-05-08 12:54:53
65
0
0
admin
#正则表达式 ##一些系统变量 \$& 与上个格式匹配的字符串 \$` 在上个格式匹配信息前的字符串 \$’ 在上个格式匹配信息后的字符串 \$+ 与上个正则表达式搜索格式匹配的最后一个括号 \$<数字>含有与上个正则表达式匹配对应括号结果 *** ##贪婪,非贪婪 ``` + * => 贪婪 +? *? => 非贪婪 ``` *** ##匹配方式 /i 大小写无关 /s 使 “.” 匹配任意字符, 通常 "." 不匹配换行符 /x 在匹配时无视正则表达式中的空白符,使正则表达式更可读 /m 使 ^由字符串开头变为行开头;使$由字符串结尾变为行结尾 *** ##注意 ```perl my $s = "3w2w3e4t5"; my $b = $s =~ /(\d)w(\d)/; #上下文是一个变量时返回匹配成功与否,1是成功,空值是失败 my @a = $s =~ /(\d)w(\d)/; #上下文是数组时返回捕获的变量列表 my @c = $s =~ /(\d)w(\d)w(?:\d)/; #括号里加?:表示不捕获,默认括号里的都会被捕获 ``` *** #文本处理-修改 **chomp(\$a);** 去除在$a 最后的换行符 *** **大小写转换** \U, \L 后的全部是大写,小写 , 直到\E 为止 \u,\l 后的一个字符是大写,小写 ```perl $var =~ s/(.*)/\L$1\EABCD/; #\L 和\E之间的全部转化为小写 ``` *** **split 拆字符串成数组** ```perl my @a = split /:/, $s; #用冒号分格 ``` *** **join 组数组成字符串** ```perl my $string = join ":", @a; #用冒号相连 ``` #文本处理-定位 ```perl index 返回匹配字符串的位置(从0开始),没有返回-1 my $where = index($string,$pattern); ``` ```perl 修改字符串某位置的部分,返回被替换的内容 my $new = substr($string,$start_location,$length,$change_string) 对倒数的三个字符做修改 my $string="1234567"; my $new = substr($string,-3) =~ s/[1234567]/0/g ; 这时候返回的是匹配成功的数量 print "$string==>$new\n"; 结果: 1234000==>3 ``` *** #文本处理-grep ```perl my @greped = grep { if ( $_ > 3 ) { 1;} } @array; # 把大于1的筛选出来 ``` *** #文本处理-sort <=> 用于数字排序 cmp 用于字符排序 \$a 和 \$b 是sort 的内置变量,分别代表两个比较的值 ```perl my @sorted1 = sort { $a <=> $b } @array1; #数字从小到大 my @sorted2 = sort { $hash{$a} cmp $hash{$b} || $a <=> $b } keys %hash; #先按hash 的值排序,值相同再以键排序 #从大到小排序的另一种定义方式 sub leo_sort{ if ( $a > $b ){ 1; } else {-1;} } my @sorted = sort leo_sort @array; ``` *** #文本处理-map ```perl my @array = qw/ 1 2 /; my @maped = map { $_ =~ s/^(.*)$/$1=====/g; $_,"addnewline"; } @array; print Dumper @maped; 结果: $VAR1 = '1====='; $VAR2 = 'addnewline'; $VAR3 = '2====='; $VAR4 = 'addnewline'; ```
上一篇:
perl 0.04 系统变量/转义字符
下一篇:
perl 0.06 输入,输出,读取文件
文档导航