python正则表达式:跳过单词

时间:2015-05-22 11:45:26

标签: python regex

我在python中使用正则表达式,我有点难过一个看似简单的问题。 我正在尝试匹配表单的字符串:

output    wire     some_net,  

现在,单词wire可能存在或者可能不存在。我也想捕获单词输出(也可以是输入)和some_net(变量单词) 所以,如果我们有格式:

output    wire     some_net,

我希望捕获outputsome_net

但如果我们有格式:

output        some_net,

我仍然希望能够捕获匹配outputsome_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

事实上,对于上面的测试字符串,我根本不想要匹配(我有一个不同的正则表达式来解决这个问题。

那么,有没有办法满足这种情况?

1 个答案:

答案 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'