[英]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.