【发布时间】:2016-05-19 16:31:45
【问题描述】:
我的问题涉及正则表达式,应该很简单(我希望)。
我想验证这样的字符串(netsh cmd 输出):
"\r\nR‚servations d'URLÿ:\r\n--------------------\r\n\r\n URL r‚serv‚e : https://+:443/SomeWebSite/ \r\n Utilisateurÿ: AUTORITE NT\\SERVICE R\u0090SEAU\r\n \u0090couterÿ: Yes\r\n D‚l‚guerÿ: Yes\r\n SDDLÿ: D:(A;;GA;;;NS) \r\n\r\n\r\n"
使用这种模式:
"URL .+https:\/\/\+:443\/SomeWebSite\/.+Yes.+Yes.+SDDL.+"
所以,我打算检测这种字符串(xxxxx是什么(+)):
xxxxxURLxxxxxhttps://+:443/SomeWebSite/xxxxxYesxxxxxYesxxxxxSDDLxxxx
我用 C# 编写了这段代码来做这件事,但我的表达仍然不起作用:
string output = "\r\nR‚servations d'URLÿ:\r\n--------------------\r\n\r\n URL r‚serv‚e : https://+:443/SomeWebSite/ \r\n Utilisateurÿ: AUTORITE NT\\SERVICE R\u0090SEAU\r\n \u0090couterÿ: Yes\r\n D‚l‚guerÿ: Yes\r\n SDDLÿ: D:(A;;GA;;;NS) \r\n\r\n\r\n";
output = output.Replace(Environment.NewLine, ""); //==> output2=="R‚servations d'URLÿ:-----------
Regex testUrlOpened = new Regex(output, RegexOptions.Singleline);
MessageBox.Show(testUrlOpened.IsMatch(@"URL").ToString()); // ==> False
MessageBox.Show(testUrlOpened.IsMatch(@".+URL.+").ToString()); // ==> False
MessageBox.Show(testUrlOpened.IsMatch(@"URL .+https:\/\/\+:443\/SomeWebSite\/.+Yes.+Yes.+SDDL.+").ToString()); // ==> False
所以我想我在 c# 中遇到了正则表达式的另一个问题...... 可能是编码问题?
感谢您的帮助!
弗朗索瓦
【问题讨论】:
标签: c# regex string parsing encoding