svlib(4)- 正则表达式
0赞svlib,提供了正则表达式支持,可曾想过,在sv中,竟然还能用正则表达式,只要用上了svlib这个开源库,就可以在sv中,使用正则表达式了。
一、 Regex类
svlib中,提供了Regex类,来实现正则表达式。该类的new方法,是protected修饰的,所以该类不能通过通过new方法,创建对象。
text:正则表达式
runStr: Str类对象,对象中,保存有待匹配的字符串
其实,正则表达式的实现,还是通过调用DPI的方式,调用c实现的正则表达式匹配。linux提供了一个库函数,regexec,实现正则匹配。
二、 方法
1. 创建
类中,提供了几个方法:
create,就是创建对象
setRE:设置正则表达式
setOpts:设置选项
setStr: 设置待匹配的字符串,传参是Str类对象
setStrContents: 设置待匹配的字符串,传参是string类型。
2. 匹配
两个方法
test:匹配传参的Str类中的待匹配字符串
retest:匹配Regex类中的runStr中的待匹配字符串
3. 替换
将待匹配的字符串中符合正则表达式的,替换成传入的substStr字符串。
4. 获取结果
getMatchCount: 符合匹配的个数
getMatchStart: 符合匹配的起始位置, 传参表示第几次匹配
getMatchLength: 符合匹配的内容的长度, 传参表示第几次匹配
getMatchString: 符合匹配的字符串, 传参表示第几次匹配
三、 例子
从字符串中,将数字匹配出来。匹配出来的数字有两组。
执行结果:
匹配数为3,表示匹配到了3项。
第一项是匹配到的整个字符串
第二项是正则表达式中的第一个()中内容
第三项是正则表达式中的第二个()中内容
也可以对字符串进行替换
将字符串中的数字字符串,全部替换为987654
执行结果: