卢骏 · 2020年07月17日

svlib(4) – 正则表达式

一、 Regex类

svlib中,提供了Regex类,来实现正则表达式。该类的new方法,是protected修饰的,所以该类不能通过new方法,创建对象。
1.jpg
text:正则表达式

runStr: Str类对象,对象中,保存有待匹配的字符串

其实,正则表达式的实现,还是通过调用DPI的方式,调用c实现的正则表达式匹配。linux提供了一个库函数,regexec,实现正则匹配。
2.jpg

二、方法

1. 创建

类中,提供了几个方法:
3.jpg

create,就是创建对象
setRE:设置正则表达式

setOpts:设置选项

setStr: 设置待匹配的字符串,传参是Str类对象

setStrContents: 设置待匹配的字符串,传参是string类型

2. 匹配

两个方法
4.jpg
test:匹配传参的Str类中的待匹配字符串

retest:匹配Regex类中的runStr中的待匹配字符串

3. 替换

将待匹配的字符串中符合正则表达式的,替换成传入的substStr字符串。
5.jpg

4. 获取结果

6.jpg

getMatchCount: 符合匹配的个数

getMatchStart: 符合匹配的起始位置, 传参表示第几次匹配

getMatchLength: 符合匹配的内容的长度, 传参表示第几次匹配

getMatchString: 符合匹配的字符串, 传参表示第几次匹配

三、 例子

从字符串中,将数字匹配出来。匹配出来的数字有两组。
7.png

     执行结果:

8.jpg

匹配数为3,表示匹配到了3项。

第一项是匹配到的整个字符串

第二项是正则表达式中的第一个()中内容

第三项是正则表达式中的第二个()中内容

也可以对字符串进行替换

将字符串中的数字字符串,全部替换为987654
9.jpg

     执行结果:

10.jpg

#### 更多相关阅读
svlib(2) – 目录操作
svlib(3) – 文件操作
使用IMC将覆盖率转化为网页格式

原文首发于骏的世界博客
作者:卢骏
更多IC设计相关的文章请关注IC设计极术专栏,每日更新。

推荐阅读
关注数
20176
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息