gpt4 book ai didi

java - 使用正则表达式匹配 Lua 多行字符串和注释

转载 作者:行者123 更新时间:2023-11-30 02:45:01 26 4
gpt4 key购买 nike

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

多行字符串 - Lua 多行括号以双方括号开始和结束 [[ 之间的所有内容都是字符串,甚至可以嵌套多行字符串。你可以看看我做了什么here ,正则表达式为 \[\[((?>[^\[\[\]\]]​​|(?R))*\]\]) 并且有效。它与您在 this page 上看到的类似。在匹配平衡结构部分下。它查找具有等量 [[]] 的表达式 事实是,Java 正则表达式引擎不支持递归。我怎样才能用支持的东西替换它?

多行注释 - Lua多行注释以--[====[]开始,以]====]结束。仅当等号与左括号一样多时才结束。等号可以是 0 到无穷大之间的任何位置。我做了this regex --\[\[((.|\n)*?)\]\] 但它仅适用于 --[[ comment ]] 模式并且执行不支持此--[==[ comment ]==]。也许我可以做一些事情,比如计算开头等号匹配的数量,然后匹配结束标记的相同数字。这在java正则表达式中可能吗?怎么办?

最佳答案

试试这个

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

多行字符串文字完全相同,但没有前导 --:

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

关于java - 使用正则表达式匹配 Lua 多行字符串和注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com