我最近在测试我的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)是否包含';'与IndexOf a')'。 (并在第二个'如果'声明中撤销):我认为他们都是导致我的问题;但是,我对如何修复它没有任何线索。
非常感谢帮助。
答案 0 :(得分:3)
您对SetStyle
的调用中的字符串是正则表达式模式,因此)
需要进行转义。问题是parens是Regex中的特殊字符。正则表达式解析器正在查看关闭的paren,但没有开放的paren来匹配它。
试试这个:
e.ChangedRange.SetStyle(error_red, @"\);", RegexOptions.IgnoreCase);