我是THE的新用户svlib
SystemVerilog 环境中的封装。参考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(使用前将#替换为@)