正则表达式匹配不在字符串文字内的逗号

adr*_*min 0 java regex groovy basic

在BASIC中,print语句可能如下所示:

100 PRINT "Copyright, Adrian McMenamin","maybe"
Run Code Online (Sandbox Code Playgroud)

哪个应该在第一个语句和第二个语句之间放置一个制表符空格.

我正在为Groovy/Java中的BASIC开发DSL /解释器,需要解析这一行并生成如下内容:

print "Copyright, Adrian McMenamin", "    ","maybe"
Run Code Online (Sandbox Code Playgroud)

(因为Groovy将逗号解释为仅分离打印函数的参数.)

那么正则表达式将区分不在引号内的逗号和那些(不要担心PRINT或行号等)的逗号?

jol*_*ier 7

您正在研究正则表达式无法处理的解析语法.通常,您需要对开放或闭括号进行计数,这超出了正则表达式的范围.您可能希望查看解决此问题的解析器,如ANTLR.这可能是矫枉过正的只是这个任务,但我想,你将不得不转换多种类型的基本语句,然后解析器真的是你需要的东西,而不是一个正则表达式.

  • 不,这不是矫枉过正.`"例如,字符串可以有\'转义引号,还有更多!\""`. (4认同)