为了账号安全,请及时绑定邮箱和手机立即绑定

以下正则表达式有什么问题?

以下正则表达式有什么问题?

慕田峪9158850 2021-07-08 14:11:26
我必须将以下语句分为 3 组:DFFX1 _pcpi_insn_reg_16_  ( .D(n13328), .CK(clk), .Q(pcpi_insn_16_) );Group1: DFFX1Group2: _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_) 你能解释一下为什么这不起作用吗?
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

它不起作用,因为默认情况下正则表达式是贪婪的。换句话说,.*在屈服于第二个之前,第一个将尽可能多地消耗目标文本。您应该使您的模式更具限制性以解决此问题。例如:


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()

而不是匹配任何字符,这只匹配不是空白字符的字符(这就是这样\S做的)。这将打印这些组:


('DFFX1', '_pcpi_insn_reg_16_', ' .D(n13328), .CK(clk), .Q(pcpi_insn_16_) ')


查看完整回答
反对 回复 2021-07-13
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

正则表达式可以更严格地工作:

'(\w*)\s(\w*)\s\((.*)\)'


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信