【发布时间】:2012-07-13 22:54:23
【问题描述】:
在 BASIC 中,打印语句可能如下所示:
100 PRINT "Copyright, Adrian McMenamin","maybe"
应该在第一条语句和第二条语句之间放置一个制表符。
我正在为 Groovy/Java 中的 BASIC 开发 DSL/解释器,它需要解析这一行并生成如下内容:
print "Copyright, Adrian McMenamin", " ","maybe"
(因为 Groovy 将逗号解释为仅分隔打印函数的参数。)
那么什么正则表达式可以区分不在引号内的逗号和在引号内的逗号(不用担心 PRINT 或行号等)?
【问题讨论】:
-
BASIC 语言中字符串的语法是什么?是否可以在字符串中使用转义引号?
-
为什么不使用逗号进行标记,然后使用制表符加入生成的集合,而不是尝试使用正则表达式进行解析?
-
是的,逗号可以出现在 BASIC 中的字符串文字中。标记点是一个很好的点。
-
由于逗号可以出现在字符串中,因此,正如 Jack Maney 在他对以下答案的评论中指出的那样,您不能使用正则表达式。正则表达式可以不处理任意嵌套和转义的引号(或括号,或 html 标签等)。无论您想多么想使用正则表达式来完成这项工作,它都无法处理。您可以编写一个迷你解析器,以便在需要处理字符串时运行
-
马克,我看错了你的评论——实际上在 BASIC 中不可能以这种方式转义字符串中的字符(或者至少不能在这个中,Sinclair,BASIC。对此感到抱歉。