[英]Regular expression to match a comma not inside a string literal
在BASIC中,打印语句如下所示:
100 PRINT "Copyright, Adrian McMenamin","maybe"
哪个应该在第一个语句和第二个语句之间放置一个制表符空间。
我正在使用Groovy / Java开发用于BASIC的DSL /解释器,它需要解析此行并产生类似以下内容的内容:
print "Copyright, Adrian McMenamin", " ","maybe"
(因为Groovy将逗号解释为仅分隔打印函数的参数。)
那么,什么正则表达式可以区分引号内的逗号和引号内的逗号(不用担心PRINT或行号等)?
我实现了一个非常简单的解析器,该解析器仅计算了开引号(模2)。 给定BASIC字符串文字的简单规则,它就可以工作。 我设计了一个非常漂亮的递归函数,它使用了一个正则表达式,可以在这种形式下正常工作:
100 PRINT "Copyright, 2012", "Adrian McMenamin"
但这失败了:
100 PRINT "Copyright, 2012"
哦,好吧,这只是DFA类方案的局限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.