我在python中使用正则表达式,我有点难过一个看似简单的问题。 我正在尝试匹配表单的字符串:
output wire some_net,
现在,单词wire可能存在或者可能不存在。我也想捕获单词输出(也可以是输入)和some_net(变量单词) 所以,如果我们有格式:
output wire some_net,
我希望捕获output
和some_net
,
但如果我们有格式:
output some_net,
我仍然希望能够捕获匹配output
和some_net
的字符串。
我正在尝试的正则表达式是:
re.compile(ur'^\s*(?P<io>output|input)\s+(?:wire\s+|\s+)(?P<net>\w+)', re.U),
但它不起作用,它会在测试字符串中捕获单词wire
:
output wire [2:0] some_net, // some comment
事实上,对于上面的测试字符串,我根本不想要匹配(我有一个不同的正则表达式来解决这个问题。
那么,有没有办法满足这种情况?
答案 0 :(得分:0)
pattern = re.match("^\s*(\S+)\s+(\S+\s*(\S+)?)?\s+(\S+),.*", verilogString)
在字符串
中使用wire
进行测试
Input String:
output wire some_net,
Out:
pattern.group(1) = 'output'
pattern.group(4) = 'some_net'
字符串
中没有wire
Input String:
output some_net,
Out:
pattern.group(1) = 'output'
pattern.group(4) = 'some_net'
使用电线范围进行测试
Input String:
output wire [2:0] some_net, // some comment
Out:
pattern.group(1) = 'output'
pattern.group(4) = 'some_net'