【发布时间】:2016-08-28 17:10:44
【问题描述】:
我正在为我们的设施开发病毒/勒索软件预警系统,该系统将从 FileSystemMonitor 收集的文件名和路径与 SQL 数据库中的正则表达式列表进行比较。
我遇到的问题是 C# 在从 SQL 服务器读取我的正则表达式时对其进行转义。
例如:
SqlCommand command = new SqlCommand("SELECT * FROM Filters ORDER BY Sequence ASC", sqlServer);
SqlDataReader reader = null;
reader = command.ExecuteReader();
filter temp;
while (reader.Read())
{
temp.dir = @reader["Folder"].ToString().Trim();
temp.file = @reader["Filter"].ToString().Trim();
if (!temp.file.Equals(""))
{
filterList.Add(temp);
}
}
如果 SQL 字段 Filter 包含有效的正则表达式 .*\.scr$,则 temp.filter 以内容 .*\\.scr$ 结束,这会导致正则表达式匹配丢失。
从 SQL 读取时,如何保持正则表达式的逐字状态?
提前感谢您的帮助!
【问题讨论】:
-
你在哪里看到额外的反斜杠?如果它在调试中,那是因为它在那里显示了转义序列。
-
您如何验证您的字符串是否包含
.*\\.scr$?设置断点并使用检查器查看变量的值将始终显示转义字符。 -
您确定您不只是查看调试窗口吗?它显示了在那里转义的字符串,但实际上它们不包含那些转义字符。
-
是的,我正在查看调试信息。我以为它会显示字符串的确切内容……听起来好像没有。
-
@user1666620 这确实有道理,谢谢!