訂閱
糾錯
加入自媒體

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

2020-07-14 17:05
ExASIC
關(guān)注

例如,下面的代碼,把所有的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()呢?只返回第一個匹配結(jié)果。

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)來查看幫助。

總結(jié)

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

習(xí)題:

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

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

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

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

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

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

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

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

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

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

暫無評論

暫無評論

人工智能 獵頭職位 更多
掃碼關(guān)注公眾號
OFweek人工智能網(wǎng)
獲取更多精彩內(nèi)容
文章糾錯
x
*文字標(biāo)題:
*糾錯內(nèi)容:
聯(lián)系郵箱:
*驗 證 碼:

粵公網(wǎng)安備 44030502002758號