正则表达式选择SubString的模式

时间:2012-04-03 18:53:17

标签: c# regex

在Regex C#中查找和选择字符串部分的语法是什么?

字符串可以是:

string tdInnerHtml = "<strong> You gained  230 Points </strong> 
                      there is going to be more text and some html code part of this       
                      string <a href=http://google.com>Google it here </a>";

// I want to extract 230 from this string using Regx. 
// The digits (230) vary for each tdInnerHtml. 
// So code would be to look for digits, followed by space, ending with Points

5 个答案:

答案 0 :(得分:4)

如果空格和</strong>标记一致,您可以使用以下内容获取匹配,并使用以下字符串:“品脱在230-240点之间,您获得230积分

        var match = Regex.Match(tdInnerHtml, @"(?<pts>\d+) Points ?</strong>");
        if (match.Success) {
            int points = Convert.ToInt32(match.Groups["pts"].Value);
            Console.WriteLine("Points: {0}", points);
        }

答案 1 :(得分:1)

我认为你的正则表达式可能是\b[0-9]+\b \bPoints\b

您可以在regexpal进行测试。

答案 2 :(得分:1)

只要您只使用一组数字后跟文字Points,就可以使用正则表达式:

Match match = Regex.Match(tdInnerHtml, @"(?<![\d-])(\d+) Points");
if (match.Success){
  // fetch result
  String pointsString = match.Groups[1].Value;

  // optional: parse to integer
  Int32 points;
  if (Int32.TryParse(pointsString, out points)){
    // you now have an integer value
  }
}

但是,如果这与信息驻留在页面上的位置有任何关联,请将其包围的格式或与HTML相关的任何其他内容进行格式化 - 注意其他人的警告并使用HTML解析器。

答案 3 :(得分:0)

正则表达式非常简单,\d+ Points。这是在C#中,带有一个命名的组捕获:

        var match = Regex.Match(tdInnerHtml, "(?<pts>\d+) Points");
        if (match.Success) {
            int points = (int)match.Groups["pts"].Value;
            // do something..
        }

答案 4 :(得分:0)

string test = "<strong> You gained 230 Points </strong>";
string pattern = @"(\d+)\sPoints";
Regex regex = new Regex(pattern);
Match match = regex.Match(test);
string result = match.Success ? match.Groups[1].Value : "";