python的正则(一):简单够用的basic版
例如,下面的代码,把所有的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.24立即参与>>> 【限时免费】安森美:Treo 平台带来出色的精密模拟
-
2月28日火热报名中>> 【免费试用】东集技术年终福利——免费试用活动
-
即日-3.21立即报名 >> 【深圳 IEAE】2025 消费新场景创新与实践论坛
-
4日10日立即报名>> OFweek 2025(第十四届)中国机器人产业大会
-
7.30-8.1火热报名中>> 全数会2025(第六届)机器人及智能工厂展
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论