先用.IndexOf从O开始找$,得到一个个$的位置n,再用IndexOf从n+1找$,得到第二个$的位置,通过Remove删除n以前的和M以后的字符,就得到第一个两个$的之间的字符。通过Remove删除原来字符中m以前的字符得到X,再对X重复以上操作,直到找不到两个$$。多看帮助吧,这个问题不难解决。

解决方案 »

  1.   

    也可以这样,先用.IndexOf从O开始找$,得到一个个$的位置n,再用IndexOf从n+1找$,得到第二个$的位置。用Substring(n,m-n)得到第一个两个$的之间的字符。通过Remove删除原来字符中m以前的字符得到X,对再对X重复以上操作,得到第二个两个$的之间的字符,重复,直到找不到两个$。
      

  2.   

    思归兄 seems to be busy. i learned a lot of regex from him. let me try it.use regex of:[\s\S]*?$(?<s1>[^$]+)$[\s\S]*?$(?<s2>[^$]+)$[\s\S]*?$(?<s3>[^$]+)$[\s\S]*?$(?<s4>[^$]+)$
      

  3.   

    string str = @"<span><ul>{$rowcount=10/$}<li>[{$field=Title/$}]<a href='../Test/dep={$field=src/$}&id={$field=fid$}'>{$field=Subject&charsize=10/$}</a></span></li></ul>";Regex r= new Regex(@"\$([^\$]*)/\$");
    Match m = r.Match(strt);
    while (m.Success)
    {
      Console.Write(m.Result("$1"));
      m = m.NextMatch();
    }
      

  4.   

    string inputString = @"<span><ul>{$rowcount=10/$}<li>[{$field=Title/$}]<a href='../Test/dep={$field=src/$}&id={$field=fid$}'>{$field=Subject&charsize=10/$}</a></span></li></ul>";Regex r;
    string rul= @"\{\$.*?\$\}"; //如果你需要{$...$}
    //string rul= @"(?<=\{\$).*?(?=\$\})"; //如果你只需要里面的内容r = new Regex(rul,RegexOptions.IgnoreCase|RegexOptions.Compiled);
    MatchCollection mc = r.Matches(inputString);if ( mc.Count > 0 ) 
    {
    Response.Write(@"match</br>");
    foreach (Match m in mc) 
    {
    Response.Write("  " + m.Value);
    }

    else 
    {
     Response.Write("false");
    }