【发布时间】:2016-02-16 19:19:06
【问题描述】:
我正在使用文件中的正则表达式匹配行来开发一种有趣的小语言。这是我目前所拥有的:
import re
code=open("code.txt", "r").read()
outputf=r'output (.*)'
inputf=r'(.*) = input (.*)'
intf=r'int (.*) = (\d)'
floatf=r'float (.*) = (\d\.\d)'
outputq=re.match(outputf, code)
if outputq:
print "Executing OUTPUT query"
exec "print %s" %outputq.group(1)
inputq=re.match(inputf, code)
if inputq:
print "Executing INPUT query"
exec "%s=raw_input(%s)"%(inputq.group(1), inputq.group(2))
intq=re.match(intf, code)
if intq:
exec "%s = %s"%(intq.group(1), intq.group(2))
exec "print %s"%(intq.group(1))
else:
print "Invalid syntax"
代码匹配说:
int x = 1
但它只会匹配第一行并停止匹配并忽略我想要匹配的其余代码。如何将文件中的每一行与我的正则表达式定义相匹配?
【问题讨论】:
-
你的问题我不清楚,请尽量集中说明你想要实现的什么,而不是如何你想做什么所以。请仅发布相关代码(即,如果您遇到正则表达式匹配问题 - 仅发布处理正则表达式和输入的相关行)。
-
我也不确定你想做什么,但如果你正在使用编程语言,你可能想知道正则表达式不适合那个 - 请参阅en.wikipedia.org/wiki/Chomsky_hierarchy#The_hierarchy - 你可能要考虑使用语法或至少看看这个:nedbatchelder.com/text/python-parsers.html