繁体   English   中英

使用Regex匹配Lua多行字符串和注释

[英]Match Lua multiline strings and comments with Regex

我有一个Lua编辑器,在其中实现了语法突出显示。 我使用正则表达式来匹配Lua的字符串,注释,令牌,数字等表达式。 整个过程都是用Java制作的,并使用Java正则表达式。 我在两件事上遇到了麻烦:

多行字符串 -Lua多行括号以双方括号[[开头和结尾之间是字符串,甚至可以嵌套多行字符串。 您可以在这里看到我所做的事情 ,正则表达式是\\[\\[((?>[^\\[\\[\\]\\]]|(?R))*\\]\\]) ,它可以正常工作。 它类似于您在本页上的“ 匹配平衡的构造”部分下看到的内容。 它查找具有相等数量[[]]的表达式。事实是,Java regex引擎不支持递归。 如何用支持的东西替换它?

多行注释 -Lua多行注释以--[====[开始,以]====]结尾。 仅在与左括号相等的符号处结束。 可以在0到无限等号之间的任意位置。 我做了这个正则表达式 --\\[\\[((.|\\n)*?)\\]\\]但是它仅适用于--[[ comment ]]模式,不支持--[==[ comment ]==] 也许我可以做一些事情,例如在开头计算等号的匹配数目,然后为结束标记匹配相同的数目。 java正则表达式中可能吗? 怎么样?

尝试这个

--\[(=*)\[(.|\n)*?\]\1\]

多行字符串文字是绝对相同的,但是没有前导--

\[((=*)\[(.|\n)*?)\]\2\]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM