我必须将以下语句分为3组:
DFFX1 _pcpi_insn_reg_16_ ( .D(n13328), .CK(clk), .Q(pcpi_insn_16_) );
Group1: DFFX1
Group2: _pcpi_insn_reg_16_
Group3: .D(n13328), .CK(clk), .Q(pcpi_insn_16_)
我正在使用:(.*) (.*) \((.*)\);
输出为:
Group1: DFFX1 _pcpi_insn_reg_16_
Group2: *empty*
Group3: .D(n13328), .CK(clk), .Q(pcpi_insn_16_)
你能解释一下为什么这样不行吗?你知道吗
它不起作用,因为默认情况下正则表达式是贪婪的。换言之,第一个
.*
将消耗尽可能多的目标文本,然后再转换到第二个。你应该使你的模式更加严格来解释这一点。例如:它不匹配任何字符,只匹配非空白字符(这就是
\S
所做的)。这将打印这些组:Regex可以对工作进行更严格的限制:
相关问题 更多 >
编程相关推荐