嚴格匹配 perl的文字匹配提取

2021-10-14 17:35:45 字數 861 閱讀 9980

perl的正規表示式極其強大,對於文字處理很有優勢。下面這個例子展示在ic驗證中怎麼利用perl的正規表示式做匹配提取。

在ic驗證中會寫大量的task/function,對很複雜的系統進行**的時候,會大量呼叫task/function,如果能夠在進出task/function的時候在log中列印出進入/離開某某task的提示,可以極大的增強debug的能力。

比如我們要用perl對原**中下面這個task的首行加列印:

處理後效果如下:

該怎麼寫這個perl呢?

很簡單,逐行讀入原**,用正規表示式匹配查詢關鍵字task,然後提取出該關鍵字右邊的task名,再在原**中加一行列印task名的語句即可。

考慮到verilog可以使用空格或者tab做分隔符,使用正規表示式做匹配提取的**如下:

該**中,$line指代文字中的一行,$task_name就是我們所需要提取的task名字,白顏色的區域就是正規表示式,perl在進行模式匹配時候,會將正規表示式中的()作為乙個完整匹配項,上圖中共有三個(),系統對其從左往右依次標號為$1, $2, $3。其中$1和$3都是匹配空格或者tab的,$2是匹配task名稱的。上述表示式一旦匹配成功,$2就是task名稱。

完整的正規表示式意思如下:需要嚴格匹配"task"關鍵字,並且匹配分號,中間的task名可以是任意1個以上的字元,該task名要求距"task"關鍵字至少乙個空格或者tab,同時該task名與;之間可以有0個或者多個空格或者tab。

perl 模式匹配

一 簡介 模式指在字串中尋找的特定序列的字元,由反斜線包含 def 即模式def。其用法如結合函式split將字串用某模式分成多個單詞 array split line 二 匹配操作符 檢驗匹配是否成功 result var abc 若在該字串中找到了該模式,則返回非零值,即true,不匹配則返回0...

perl正則匹配

字元的種類是一定的,無非是空格,數字,大小寫字母,和perl中定義的元字元,還有本國語言。所以原則上任何格式的字元都能匹配。匹配工具 選擇符號,關鍵字,量詞,斷言,轉義字元 當出現多個字元組成的 非空格字元時候,例如123,45 3 s sdgg 則使用 0 9a za z 若加上 則只能匹配一行中...

perl智慧型匹配

1.perl中 為智慧型匹配,它可以智慧型地根據符號兩側的運算元來確定操作。如要判斷某個元素是否存在於陣列中,不使用智慧型匹配,程式像這樣 my x 2 my array 1,2,3 my flag 0 for array if flag 1 else 使用智慧型匹配,程式像這樣 my x 2 my...