我尝试使用Python和正则表达式解析Gezel语言(http://rijndael.ece.vt.edu/gezel2/)的FSM语句
regex_cond = re.compile(r'.+((else\tif|else|if)).+')
line2 = '@s0 else if (insreg==1) then (initx,PING,notend) -> sinitx;'
match = regex_cond.match(line2);
我很难区分如果和else if。示例中的else if被识别为if。在
Tags:
您当前的问题是}。要使其非贪心,请改用
.+
是贪婪的,因此它匹配@s0 else
,而不是{.+?
:然而,正如其他人所建议的那样,使用Pyparsing这样的解析器比在这里使用
re
更好。在不要这样做;请改用^{} 。你以后会感谢你自己的。在
问题是}。。。改为
.+
是贪婪的,所以它正在吞噬{.+?
。或者,不要,因为您现在使用的是pyparsing
。在a\t与制表符匹配。第2行中的“else”和“if”之间没有制表符。您可以改为使用\s,它可以匹配任何空白字符。在
相关问题 更多 >
编程相关推荐