我需要匹配根目录文件名,排除不是根目录的文件。比如匹配/aaa.aspx而排除/test/aaa.aspx。
有如下测试:
test/aaa.aspx
/test.aspx
/news/aaa/aa.aspx
/news/aaaaa.aspx
http://localhost/test.aspx
/aaa.aspx
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模式
你写的不是已经达到需求了吗?不明白“其余 的全部都不要。我写了个表达式是[^(/\w*)][/(\w+/)](\w+).aspx,但只能匹配到/test.aspx,发现是/之前必须还有字 符,”你这话是什么意思,这个表达式已经能成功匹配“/test.aspx/aaa.aspx”这两项了呀。