对于这个字符串:
<li class="hl2 lb">·[军事] <a href='book/658/'>国内军事新闻 </a>
<li class="hm2 lb">
<a href='book/658/'>美国鹦鹉集体失语 中国“垮掉一代”惊人崛起! </a>
<li class="hr2 lb tr">
<span class='nw'>2008-4-22 0:04:26 </span> 我用以下代码想把'book/658'替换成'search.aspx?658'为什么无法成功? chr = new Regex(@"^(book/)([1-9]\d+/)$",RegexOptions.IgnoreCase);
for (m = chr.Match(strResult); m.Success; m = m.NextMatch())
{
strResult =strResult.Replace(m.Groups[0].ToString(), "search.aspx?"+m.Groups[2].ToString());
}
<li class="hl2 lb">·[军事] <a href='book/658/'>国内军事新闻 </a>
<li class="hm2 lb">
<a href='book/658/'>美国鹦鹉集体失语 中国“垮掉一代”惊人崛起! </a>
<li class="hr2 lb tr">
<span class='nw'>2008-4-22 0:04:26 </span> 我用以下代码想把'book/658'替换成'search.aspx?658'为什么无法成功? chr = new Regex(@"^(book/)([1-9]\d+/)$",RegexOptions.IgnoreCase);
for (m = chr.Match(strResult); m.Success; m = m.NextMatch())
{
strResult =strResult.Replace(m.Groups[0].ToString(), "search.aspx?"+m.Groups[2].ToString());
}
$ 与字符串结束的地方匹配,不匹配任何字符
用了[1-9],后面为什么还要跟个\d
楼主的这种代码浪费资源,效率也不会高
string test = @"<li class=""hl2 lb"">·[军事] <a href='book/658/'>国内军事新闻 </a>
<li class=""hm2 lb"">
<a href='book/658/'>美国鹦鹉集体失语 中国“垮掉一代”惊人崛起! </a>
<li class=""hr2 lb tr"">
<span class='nw'>2008-4-22 0:04:26 </span> "; test = Regex.Replace(test, @"book/(\d+)", "search.aspx?" + "$1", RegexOptions.IgnoreCase);
MessageBox.Show(test);