日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【perl脚本】单行循环正则匹配

發布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【perl脚本】单行循环正则匹配 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

今天就沒有人能阻止我成為一名腳本工程師了!

場景

在一行字符串中循環查找匹配一類內容,并進行后續操作如替換等;

場景1:刪除一段字符串中的數字

這類找到就刪除的場景是最簡單的,直接借助g就可以搞定了:

#!/usr/bin/perl my $str = "hello 123joom, you have 988 error, 1992 warning"; my $res;$res = ($str =~ s/\d+//g); print "replace $res time: $str";

打印結果:

replace 3 time: hello joom, you have error, warning

場景2:把一段字符串中的數字之間加上-

這類場景的特點是,按照一定規則匹配上之后會修改變量,使之不在符合之前的規則,因此用while可破:

#!/usr/bin/perl my $str = "hello 123joom, you have 988 error, 1992 warning";while($str =~ /(.*)(\d)(\d)(.*)/){$str = $1.$2."-".$3.$4; } print "$str";

打印結果:

hello 1-2-3joom, you have 9-8-8 error, 1-9-9-2 warning

場景3:計算一段字符串內數字的和

這種場景下只用一個while會進入死循環,因此需要結合g來使用:

#!/usr/bin/perl my $str = "hello 123joom, you have 988 error, 1992 warning";$_ = $str; while(/\d+/g){print "get $& \n"; }

打印結果:

get 123 get 988 get 1992

上面那個純粹是剛開始寫的時候就這么學的,更簡單的寫法是下面這樣:

#!/usr/bin/perl my $str = "hello 123joom, you have 988 error, 1992 warning";while($str =~ /\d+/g){print "get $& \n"; }

上面這段代碼的一個小瑕疵是打印不太便捷,并不是很直觀的可視,比如我想查一下為啥我的某一個值沒有匹配上打印起來就比較麻煩,因此也可以下面這種寫法:

#!/usr/bin/perl my $str = "hello 123joom, you have 988 error, 1992 warning"; my $tmp = $str; while($tmp =~ /\d+/g){$tmp = $';print "get $&, continue: $tmp \n"; }

打印結果:

get 123, continue: joom, you have 988 error, 1992 warning get 988, continue: error, 1992 warning get 1992, continue: warning

借助$` = 匹配之前的字符串, $& = 匹配到的字符串,$'為匹配之后的字符串這個屬性,可以比較直觀的看到循環匹配的過程。

總結

以上是生活随笔為你收集整理的【perl脚本】单行循环正则匹配的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。