C#和#x27;解析“)"E;”太多了)';问题

C#和#x27;解析“)"E;”太多了)';问题,c#,C#,我最近在测试我的C#程序时偶然发现了这个问题 解析“)”-太多“) 这是我的密码: try { if (e.ChangedRange.Text.Contains(";") && Convert.ToBoolean(e.ChangedRange.Text.IndexOf(")", 1))) { if (!e.ChangedRange.Text.Contains(";")

我最近在测试我的C#程序时偶然发现了这个问题

解析“)”-太多“)

这是我的密码:

        try
        {
            if (e.ChangedRange.Text.Contains(";") && Convert.ToBoolean(e.ChangedRange.Text.IndexOf(")", 1)))
            {
                if (!e.ChangedRange.Text.Contains(";") && !Convert.ToBoolean(e.ChangedRange.Text.IndexOf(")", 1)))
                    LuaLibrary.isParenthesesSemiColonError = false;
                else
                {
                    LuaLibrary.isParenthesesSemiColonError = true;
                    e.ChangedRange.SetStyle(error_red, ");", RegexOptions.IgnoreCase);
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
我在这里做的是,检查当前行(e.ChangedRange.Text)是否包含“;”使用a')的索引。(第二个“如果”的说法正好相反):我假设他们都是我的问题的根源;然而,我不知道如何修复它


非常感谢您的帮助。

您对
SetStyle
的调用中的字符串是regex模式,因此需要转义
。问题是paren是正则表达式中的特殊字符。正则表达式解析器看到的是结束参数,但没有与之匹配的开始参数

试试这个:

e.ChangedRange.SetStyle(error_red, @"\);", RegexOptions.IgnoreCase);

查看输出,找到格式错误。LuaLibrary是否真的将括号拼写为paraenthese?练习一点干练可能会有帮助。@Tod:你能再离题一点吗?:乔:已经看过了,没用。我真的看过了。问题依然存在。当'Contains'中有类似于:“^[a-zA-Z]+$”的内容时,if语句将不起作用。@TommyOper-您不希望正则表达式中的
^
$
测试是否存在子字符串TextChangedEventArgs e:好吧,无论哪种方式。。我再次测试了你的方法,我必须输入);在我的编辑中。嗯…@tommycoper-所以您需要转义上面代码中的paren,因为正则表达式解析器看到的是一个结束paren,没有与之匹配的开始paren。当您在编辑器中输入代码(由上述事件处理程序处理的代码)时,只需按正常方式输入即可。谢谢!我现在差不多明白了。把你的答案标为最好的