3

我收到此错误(我正在使用 C#):

解析 "(--[[. ?]])|(--[[. )" - 未终止的 [] 集。

尝试添加 Lua 的多条注释代码时。应该是这样的:

--[[
  Hello
]]

但是,当我在此正则表达式末尾取出 ']]' 时:

(--[[.*?]])|(--[[.*)

它会给我这个错误。但是,如果我在上面添加']]',例如:

(--[[.*?]])|(--[[.*]])

它工作得很好。

这是完整的代码:

Regex CustomCommentRegex1, CustomCommentRegex2, CustomCommentRegex3;
CustomCommentRegex1 = new Regex(@"--.*$", RegexOptions.Multiline | RegexCompiledOption);
CustomCommentRegex2 = new Regex(@"(--[[.*?]])|(--[[.*)", RegexOptions.Singleline | RegexCompiledOption);
CustomCommentRegex3 = new Regex(@"(--[[.*?]])|(.*]])", RegexOptions.Singleline | RegexOptions.RightToLeft | RegexCompiledOption);

'CustomCommentRegex2' 是我得到这个 'Unterminated [] set' 错误的地方。如果我在“CustomCommentRegex2”的末尾添加“]]”,我会遇到问题。它将突出显示“--[[ ]]”上方的文本及其内部的注释;无论如何,问题是这个'Unterminated [] set'错误。

4

1 回答 1

7

从正则表达式网站

因为我们想做的不仅仅是搜索文字片段,我们需要保留某些字符以供特殊使用。在本教程中讨论的正则表达式风格中,有 11 个具有特殊含义的字符:左方括号 [、反斜杠 \、插入符号 ^、美元符号 $、句点或点 .、竖线或竖线符号 |、问号 ?、星号或星号 *、加号 +、左圆括号(和右圆括号)。这些特殊字符通常称为“元字符”。

用 \ 转义括号

(--\[\[.*?]])|(--\[\[.*)
于 2012-04-09T22:46:11.953 回答