订阅
纠错
加入自媒体

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()函数不如perl的=~ m/.../灵活,所以re中还提供了其它函数来增强功能,findall()便是其中一个。

顾名思义,findall就是查找所有的匹配,函数返回一个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.其它函数

用dir(re)看看re模块包定义了哪些函数,如下:

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正则的基本用法就介绍完毕了。只要我们在实际项目中灵活运用这些基本规则就可以了。

习题:

1. 利用上面介绍的正则基本规则,提取verilog module的端口。

要求:考虑verilog 2001 C风格和和verilog95的传统风格。

2. 把verilog代码中的高电平复位信号rst替换成低电平复位信号rst_n。

提示:除了复位名称需要替换外,always中的复位posedge也需要同时替换成negedge;if(rst)需要替换成 if(!rst_n)。

3. 在第一题的基础上,实现模块实例化。

简化一点,外部连线的名字和端口名相同。

<上一页  1  2  3  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

人工智能 猎头职位 更多
扫码关注公众号
OFweek人工智能网
获取更多精彩内容
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号