使用 svlib 从 SystemVerilog 中的字符串中提取正则表达式匹配

2023-12-04

我是THE的新用户svlibSystemVerilog 环境中的封装。参考Verilab svlib。我有以下示例文本:

{'PARAMATER': 'lollg_1', 'SPEC_ID': '1G3HSB_1'}

我想使用正则表达式来提取1G3HSB从这段文字。

我正在使用以下代码片段,但我得到的是整行而不是仅提取的字符串。

wordsRe = regex_match(words[i], "\'SPEC_ID\': \'(.*?)\'");
$display("This is the output of Regex: %s", wordsRe.getStrContents())

谁能告诉我出了什么问题吗? 我得到的输出:

{'PARAMATER': 'lollg_1', 'SPEC_ID': '1G3HSB_1'}

而且,我想得到:

1G3HSB_1

看来您需要获取第一个捕获组的内容getMatchString(1)。另外,您需要使用贪婪量词(惰性量词不符合 POSIX 标准)和否定括号表达式 -[^']*代替.*?:

wordsRe = regex_match(words[i], "\'SPEC_ID\': \'([^\']*)\'");
$display("This is the output of Regex: %s", wordsRe.getMatchString(1))

详情请参阅用户指南:

getMatchString(m)总是完全等同于调用 range 方法Str包含搜索的字符串的对象:

range(getMatchStart(m), getMatchLength(m))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 svlib 从 SystemVerilog 中的字符串中提取正则表达式匹配 的相关文章

随机推荐