正規表示式的問題

2021-09-24 12:55:36 字數 1468 閱讀 2179

今天, promote baseline又出了問題,paul 做了一些修改。

正規表示式八條原則:(

· 原則1:正規表示式有三種不同形式(匹配(m/ /),替換(s/ / /eg)和轉換(tr/ / /))。

· 原則2:正規表示式僅對標量進行匹配( $scalar =~ m/a/; 可以工作; @array =~ m/a/ 將把@array作為標量對待,因此可能不會成功)。

· 原則3:正規表示式匹配乙個給定模式的最早的可能匹配。預設時,僅匹配或替換正規表示式一次( $a = 'string string2'; $a =~ s/string/ /; 導致 $a = 'string 2')。

· 原則4:正規表示式能夠處理雙引號所能處理的任意和全部字元( $a =~ m/$varb/ 在匹配前把varb擴充套件為變數;如果 $varb = 'a' $a = 'as',$a =~ s/$varb/ /; 等價於 $a =~ s/a/ /; ,執行結果使 $a = " s" )。

· 原則5:正規表示式在求值過程中產生兩種情況:結果狀態和反向引用: $a=~ m/pattern/ 表示 $a 中是否有子串 pattern 出現,$a =~ s/(word1)(word2)/$2$1/ 則「調換」這兩個單詞。

· 原則6:正規表示式的核心能力在於萬用字元和多重匹配運算子以及它們如何操作。$a =~ m/\w+/ 匹配乙個或多個單詞字元;$a =~ m/\d/" 匹配零個或多個數字。

· 原則7:如果欲匹配不止乙個字元集合,perl使用 "|" 來增加靈活性。如果輸入 m/(cat|dog)/ 則相當於「匹配字串 cat 或者 dog。

· 原則8:perl用 (?..) 語法給正規表示式提供擴充套件功能。

問題一:

從 「m_x75plat_mp-main_1.0_v118:project:mc75p#1」中取出「_1.0_v118」, 拼成「cmt_x75plat_1.0_v118_060221」

或者從 「m_x75plat_mp-mec#main_1.0_v15.1:project:mc75p#1」中取出「_1.0_v15.1」, 拼成「cmt_x75plat_1.0_v15.1_060221」

if ($version =~ /#/) else

$baseline = $out;

chomp $baseline;

$out =~ s/^(.*)\-(.*)\:(.*)\:(.*)\s*/$2/;

if ($out =~ /#/) else  

$1,$2這些變數是和前面對應的,並且不需要替換的字元用(.*)代替

比如$string = "a b  c  d  e  f  g";

$string =~s/(a)(.*)(c  d  e)(.*)/$2 $4/;

print $string;

現在執行結果就為

b f g

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

正規表示式 開發常用的正規表示式

正規表示式是一種用來進行文字匹配的工具,其語法優美簡潔。在開發中,查詢 對比以及匹配字串是家常便飯的業務,通過正規表示式我們將這些業務描述成某些需求規則,來讓我們的 更美觀 實用。例如我們要驗證使用者輸入的密碼長度是否滿足6 18位的長度,新手最常見的驗證方式是判斷輸入的密碼長度 return te...