擅长:python、mysql、java
<p>它不起作用,因为默认情况下正则表达式是贪婪的。换言之,第一个<code>.*</code>将消耗尽可能多的目标文本,然后再转换到第二个。你应该使你的模式更加严格来解释这一点。例如:</p>
<pre><code>import re
pattern = r'([\S]+) ([\S]+) \((.*)\)'
text = 'DFFX1 _pcpi_insn_reg_16_ ( .D(n13328), .CK(clk), .Q(pcpi_insn_16_) );'
m = re.match(pattern, text)
print m.groups()
</code></pre>
<p>它不匹配任何字符,只匹配非空白字符(这就是<code>\S</code>所做的)。这将打印这些组:</p>
<pre><code>('DFFX1', '_pcpi_insn_reg_16_', ' .D(n13328), .CK(clk), .Q(pcpi_insn_16_) ')
</code></pre>