我是靠谱客的博主 会撒娇手链,这篇文章主要介绍正则表达式(二)扩展应用(结合perl语言),现在分享给大家,希望可以做个参考。

Perl语言的正则表达式功能非常强大,基本上是常用语言中最强大的,很多语言设计正则式支持的时候都参考Perl的正则表达式。以下面一个例子入门:perl实现匹配一个标量是否是数字。

复制代码
1
2
3
4
5
6
7
#!/usr/bin/perl $rely = <STDIN>; #键盘输入 if($rely =~ m/^[0-9]+$/){ print("is digits"); }else{ print("not is digits"); }
  • m/……/中间省略号放入正则表达式。
  • m代表尝试用正则表达式匹配。
  • =~用来连接要匹配的字符串以及正则表达式。

perl会保存括号内的子表达式实际匹配的文本,Perl通过变量 1, 1 , 2,$3等等,分别指向第一组、第二组、第三组括号内的子表达式实际匹配的文本。正则表达式匹配成功一次,Perl就会设置一次。

例如:以下两种写法,并不会影响匹配结果,但是却会影响到子表达式的值。

这里写图片描述

这里写图片描述

摄氏温度和华氏温度的转换(对于上面保存子表达式的应用)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl $input = <STDIN>; #接收用户输入的一行文本 chomp($input); #去掉文本末尾的换行符 if($input =~ m/^([-+]?[0-9]+)([CF])$/){ #如果已经匹配。$1保存数字,$2保存"C"或者"F" $InputNum = $1; $type = $2; if($type eq "C"){ #如果输入摄氏温度,则计算华氏温度 $celsius = $InputNum; $fahrenheit = $celsius;#($celsius * 9 / 5) + 32; }else{ #计算摄氏温度 $fahrenheit = $InputNum; $celsius = ($fahrenheit - 32) * 5 / 9; } printf "%.2f C is %.2f Fn",$celsius, $fahrenheit; }else{ print("error."); }

运行结果:
这里写图片描述

如果将程序中的正则匹配条件加上浮点数,则 1 1 、 2、$3就分别代表了别的意思。

这里写图片描述

Perl语言自身的元字符

此部分提到的是Perl语言的元字符,而不是正则表达式的元字符。

这里写图片描述

Perl语言实现表达式替换

复制代码
1
$var =~ s/regex/replacement/ //意思是将能够匹配正则表达regex的字符串都替换为replacement。

这里写图片描述

最后

以上就是会撒娇手链最近收集整理的关于正则表达式(二)扩展应用(结合perl语言)的全部内容,更多相关正则表达式(二)扩展应用(结合perl语言)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部