訂閱
糾錯
加入自媒體

python的正則(一):簡單夠用的basic版

2020-07-14 17:05
ExASIC
關注

例如,下面的代碼,把所有的input替換成output:

1import re

2s = 'input wire a;input wire b;'

3result = re.sub(r'input', r'output', s, 0, re.S)

4print(result) # 'output wire a;output wire b;

re.findall

因為python中的search()函數(shù)不如perl的=~ m/.../靈活,所以re中還提供了其它函數(shù)來增強功能,findall()便是其中一個。

顧名思義,findall就是查找所有的匹配,函數(shù)返回一個list。語法如下:

1import re

2result = re.findall(r'pattern', 'string', option)

例如,查找所有的輸入端口:

1import re

2s = 'input wire a;input wire b;'

3result = re.findall(r'input.*?;', s, re.S)

4print(result) #['input wire a;', 'input wire b;']

我們可以看到,findall()返回了所有輸入端口的列表。而search()呢?只返回第一個匹配結果。

re.其它函數(shù)

用dir(re)看看re模塊包定義了哪些函數(shù),如下:

1import re

2dir(re)

3# [..., 'compile', 'copyreg', 'enum', 'error', 'escape', 

4  'findall', 'finditer', 'fullmatch', 'functools', 'match',  

5  'purge', 'search', 'split', 'sre_compile', 'sre_parse', 

6  'sub', 'subn', 'template']

大家可以用help(re.xxx)來查看幫助。

總結

到此,python正則的基本用法就介紹完畢了。只要我們在實際項目中靈活運用這些基本規(guī)則就可以了。

習題:

1. 利用上面介紹的正則基本規(guī)則,提取verilog module的端口。

要求:考慮verilog 2001 C風格和和verilog95的傳統(tǒng)風格。

2. 把verilog代碼中的高電平復位信號rst替換成低電平復位信號rst_n。

提示:除了復位名稱需要替換外,always中的復位posedge也需要同時替換成negedge;if(rst)需要替換成 if(!rst_n)。

3. 在第一題的基礎上,實現(xiàn)模塊實例化。

簡化一點,外部連線的名字和端口名相同。

<上一頁  1  2  3  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    掃碼關注公眾號
    OFweek人工智能網
    獲取更多精彩內容
    文章糾錯
    x
    *文字標題:
    *糾錯內容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網安備 44030502002758號