3

次のエラーが表示されます (C# を使用しています):

parsing "(--[[. ?]])|(--[[. )" - 未終了の [] セット。

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

正規表現のWeb サイトから

テキストの文字通りの部分を単に検索する以上のことをしたいので、特別な用途のために特定の文字を予約する必要があります。このチュートリアルで説明する正規表現フレーバーには、特別な意味を持つ 11 個の文字があります:左角括弧 [、バックスラッシュ \、脱字記号 ^、ドル記号 $、ピリオドまたはドット .、縦棒またはパイプ記号 |、疑問符 ?、アスタリスクまたは星印 *、プラス記号 +、左丸括弧 (および右丸括弧)。これらの特殊文字は、しばしば「メタ文字」と呼ばれます。

\ で括弧をエスケープします

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