C#正则表达式问题 - 帮助

时间:2011-03-18 17:13:08

标签: c# .net regex

如何从此字符串中获取MB转移?

<div class="loggedIN"> 
Jesteś zalogowany jako: <a href="konto" style="color:#ffffff;"><b>Hooch</b></a> <i>|</i> <a style="font-size:11px;" href="wyloguj">wyloguj się </a><br/><br/> 
Transfer: 21410.73 MB<br/><span title="Dziennie limit ściąganie z RS zwiększany jest o 500MB, kumuluje się maksymalnie do 2500MB. Podczas pobierania z RS, limit jest obniżany a transfer pobierany jest z konta podstawowego.">z czego max 2500 MB na RS <a href="konto,rs"><img src="style/img/ico/info_icon.png" border="0"/></a></span><br/> 
</div>

我不知道正则表达式是如何让这一组得到的:“21410.73”

4 个答案:

答案 0 :(得分:4)

使用正则表达式似乎有点矫枉过正。只需查找字符串"Transfer: ",然后查找以下" MB",并获取它们之间的内容:

int start = str.IndexOf("Transfer: ") + 10;
int end = str.IndexOf(" MB", start);
string mb = str.Substring(start, end - start);

答案 1 :(得分:3)

Match m = Regex.Match(string, @"Transfer: ([0-9.]+) MB");
if (m.Success)
{
    string remaining = m.Groups[1].Value
}

应该这样做。

答案 2 :(得分:0)

var rx = new Regex(@"Transfer: ([0-9]+(?:\.[0-9]+)?)");
var result = rx.Match(html).Groups[1].Value;

但你不应该用正则表达式解析html。我正在将正则表达式“锚定”到“Transfer:”字符串。

答案 3 :(得分:-1)

Match match = Regex.Match(string, @"Transfer: [0-9.]+ MB$");
if (match.Success)
   var dataLeft = match.Groups[1].Value;

我经常使用这个在线测试仪进行我的注册测试:http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx