svlib(4) – 正则表达式

svlib,提供了正则表达式支持,可曾想过,在sv中,竟然还能用正则表达式,只要用上了svlib这个开源库,就可以在sv中,使用正则表达式了。

一、            Regex

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

clip_image002

l  text:正则表达式

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

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

clip_image004

二、            方法

1.                创建

类中,提供了几个方法:

clip_image006

l  create,就是创建对象

l  setRE:设置正则表达式

l  setOpts:设置选项

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

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

2.                匹配

两个方法

clip_image008

l  test:匹配传参的Str类中的待匹配字符串

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

3.                替换

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

clip_image010

4.                获取结果

clip_image012

l  getMatchCount: 符合匹配的个数

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

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

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

三、            例子

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

clip_image013

         执行结果:

clip_image015

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

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

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

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

         也可以对字符串进行替换

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

clip_image017

         执行结果:

clip_image019

 

 

此条目发表在IC, 语言相关分类目录,贴了标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。