c#关于正则、网络连接测试的两个问题
1.为什么正则"\s"这么写就有错,而"\n"却没有错?详细解释一下原因
2.c#中怎么判断网络是否出于连接状态?
问题点数:50、回复次数:10Top
1 楼fancyf(凡瑞)回复于 2005-06-17 10:16:07 得分 50
1、最好把整个表达式的要求说一下,不然没法判断
2、
public string NetStatus()
{
ManagementObjectCollection objects;
string status = "";
ManagementObjectSearcher searcher = new ManagementObjectSearcher();
searcher.Query.QueryString = "Select * From Win32_NetworkAdapter ";
objects = searcher.Get();
foreach(ManagementObject obj in objects)
{
foreach(PropertyData p in obj.Properties)
{
if(p.Name.Equals("NetConnectionStatus"))
{
if(p.Value!=null)
{
status = p.Value.ToString();
}
}
}
}
switch(status)
{
case "0":
return "Disconnected";
case "1":
return "Connecting ...";
case "2":
return "Connected";
case "3":
return "Disconnecting ...";
case "4":
return "Hardware not present";
case "5":
return "Hardware disabled";
case "6":
return "Hardware malfunction";
case "7":
return "Media disconnected";
case "8":
return "Authenticating";
case "9":
return "Authentication succeeded";
case "10":
return "Authentication failed";
default:
return "";
}
}Top
2 楼maconelxp(皮皮)回复于 2005-06-17 10:19:28 得分 0
第一个问题是:
string pattern = "\s";这样c#涉及器直接提示我这就是一个错误的转义序列
而我用
string pattern = "\n";却不会出现这样的提示,为什么?Top
3 楼fancyf(凡瑞)回复于 2005-06-17 10:25:09 得分 0
\是C#中的转移字符,他后面的那个字符会被认为有特殊用途
\s在C#中没有意义,因此会被报错,而\n是C#中的换行符,虽然不抱错,但是在正则表达式中写\n也起不到应有的效果,要写在正则表达式中,\要用\\来代替,也就是说,应该写成
"\\s"
和
"\\n"
分别对应正则表达式中的\s和\n两个符号Top
4 楼maconelxp(皮皮)回复于 2005-06-17 10:32:59 得分 0
你的意思是说:\s在正则表达式中是表示:匹配空白字符,但是在c#语法中却没有实际意义,所以才导致的错误吗?
如果我现在要检查用户输入的正则是否合法(能匹配我的需求)
比如我要求用户输入的正则类似
string pattern = @"[\s\S]*?(?<content>...)[\s\S]*"; //...表示任意字符
我该怎么写我的正则去检查用户输入的正则是否合法?Top
5 楼fancyf(凡瑞)回复于 2005-06-17 10:37:26 得分 0
你这样写
string pattern = @"[\s\S]*?(?<content>...)[\s\S]*";
没有问题,前面加上@了,就不会被转义了
但是去掉@的话就会报“这就是一个错误的转义序列”的错误Top
6 楼maconelxp(皮皮)回复于 2005-06-17 10:49:01 得分 0
这个我知道,可是如果我写一个正则,用来检查用户输入的正则是否符合我的要求,这个正则我该怎么写?如果不加@,把\s当成非转义字符Top
7 楼fancyf(凡瑞)回复于 2005-06-17 10:58:53 得分 0
你的要求是什么?
要检查用户输入了一个\s,那在C#中得写pattern = @"\\s"Top
8 楼maconelxp(皮皮)回复于 2005-06-17 11:26:03 得分 0
谢谢你,另外你上边那个ManagementObjectSearcher 使用的查询语句从哪里来的?
都能对什么查询,我查msdn也没有找到查询这方面的Top
9 楼fancyf(凡瑞)回复于 2005-06-17 11:31:22 得分 0
WMI我也不熟悉,MSDN中有完整的WMI参考,可以去找一下有关WMI的资料看一下Top
10 楼maconelxp(皮皮)回复于 2005-06-17 11:50:01 得分 0
太谢谢你了Top




