首页 新闻 会员 周边 捐助

有个匹配“根目录文件名”的正则写的有问题,求指教!

0
悬赏园豆:100 [已解决问题] 解决于 2010-05-22 17:24

我需要匹配根目录文件名,排除不是根目录的文件。比如匹配/aaa.aspx而排除/test/aaa.aspx。

有如下测试:

 

test/aaa.aspx
/test.aspx
/news/aaa/aa.aspx
/news/aaaaa.aspx
http://localhost/test.aspx
/aaa.aspx

 

 

我的目的是这些测试中能匹配“/aaa.aspx”和“/test.aspx”2项,其余的全部都不要。我写了个表达式是[^(/\w*)][/(\w+/)](\w+).aspx,但只能匹配到/test.aspx,发现是/之前必须还有字符,不知道错哪里了,求帮助!




问题补充: @Astar 但纯粹这样的/aaa.aspx不行,如果“/aaa.aspx”的前面加一个什么字比如空格就可以了。我给的测试上第一行前面加了几个字,你去掉会发现第一行不被匹配。我就是为这个空格头疼。谢谢你的关注。
肖坤的主页 肖坤 | 初学一级 | 园豆:100
提问于:2010-05-21 10:57
< >
分享
最佳答案
0
public const string regString=@"^/+?\w+.aspx";

public static void GetUrlListByHtml(string text)
{
// Compile the regular expression.
System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(regString, System.Text.RegularExpressions.RegexOptions.Multiline);
// Match the regular expression pattern against a text string.
System.Text.RegularExpressions.Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
string urlX = m.Value;
matchCount
++;
Console.WriteLine(
"" + matchCount + "个根地址:");
Console.WriteLine(
"原地址是" + urlX);
Console.WriteLine(
"------------------------------------");
m
= m.NextMatch();
}
}

 

 

 

public static void Main(string[] args)
{
string strhtml = @"/aab.aspx
/test.aspx
/news/aaa/aa.aspx
/news/aaaaa.aspx
http://localhost/test.aspx
/aaa.aspx
";
GetUrlListByHtml(strhtml);
Console.ReadKey();
}

 

结果:
第1个根地址:
原地址是/aab.aspx
------------------------------------
第2个根地址:
原地址是/test.aspx
------------------------------------
第3个根地址:
原地址是/aaa.aspx
------------------------------------

注意启用multiLine模式

收获园豆:100
邀月 | 高人七级 |园豆:25475 | 2010-05-21 16:41
其他回答(1)
0

你写的不是已经达到需求了吗?不明白“其余 的全部都不要。我写了个表达式是[^(/\w*)][/(\w+/)](\w+).aspx,但只能匹配到/test.aspx,发现是/之前必须还有字 符,”你这话是什么意思,这个表达式已经能成功匹配“/test.aspx/aaa.aspx”这两项了呀。

Astar | 园豆:40805 (高人七级) | 2010-05-21 11:56
^/+?\w+.aspx,就如楼下所说的,启用多行模式。System.Text.RegularExpressions.RegexOptions.Multiline
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-05-21 16:52
谢谢你的关注。
支持(0) 反对(0) 肖坤 | 园豆:100 (初学一级) | 2010-05-22 17:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册