在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
答案 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 : "";