<div class="anime_info"><div class='ctdn'>Ep 7 - <span class="cd_day">3</span>d <span class="cd_hr">10</span>h <span class="cd_min">30</span>m </div>
如何使用Regex从字符串中获取7。我试着休息一下:
System.Text.RegularExpressions.Regex.Matches(line,@"[^\d]")[0].Value
System.Text.RegularExpressions.Regex.Matches(line,@"\d")[0].Value
System.Text.RegularExpressions.Regex.Match (line, @">Ep (\d*)- <span").Groups [1].Value
System.Text.RegularExpressions.Regex.Match (line, @">Ep ([0-9]*)- <span").Groups [1].Value
System.Text.RegularExpressions.Regex.Match (line, @">Ep ([0-9])- <span").Groups [1].Value
System.Text.RegularExpressions.Regex.Match(line,@"\d").Value
一切都失败了。
请帮助并抱歉我的英语不好。
答案 0 :(得分:2)
答案 1 :(得分:2)
答案 2 :(得分:0)
使用以下代码应该有效 -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
namespace Test.Console
{
class Program
{
static void Main(string[] args)
{
string reference = "<div class=\"anime_info\"><div class='ctdn'>Ep 7 - <span class=\"cd_day\">3</span>d <span class=\"cd_hr\">10</span>h <span class=\"cd_min\">30</span>m </div>";
var regex = "[>]Ep(\\s+)(\\d+)(\\s+)\\-(\\s+)[<]";
var regex2 = "(\\d+)";
foreach (var m in Regex.Matches(reference, regex))
{
System.Console.WriteLine(m.ToString());
var m2 = Regex.Match(m.ToString(), regex2);
System.Console.WriteLine(m2.ToString());
}
System.Console.Read();
}
}
}
它打印以下内容,因此它正在运行 -
>Ep 7 - <
7
regex
用于隔离包含7
regex2
用于隔离7
内的regex
,\\s+
而不是使用简单的空格,所以如果有更多的空格,它就不会失败。-
是正则表达式中的关键字符,因此如果您在字符串中匹配\-
,则应使用-
。答案 3 :(得分:0)
从你的正则表达式看起来,你知道&#34; Ep&#34;将始终与数字后跟空格。一种选择是将你的字符串分成几个子字符串。
string input = "<div class='anime_info'><div class='ctdn'>Ep 7 - <span class='cd_day'>3</span>d <span class='cd_hr'>10</span>h <span class='cd_min'>30</span>m </div>";
//grab a substring starting after "Ep "
string next = input.Substring(input.IndexOf("Ep ") + 3);
//grab the start of the new string until the first space
string final = next.Substring(0, next.IndexOf(" "));
如果你想概括一下,你可以使用像
这样的函数来实现string stringBetween (string input, string start, string stop)
{
//grab a substring starting after start
string output = input.Substring(input.IndexOf(start) + start.Length);
//grab the start of the new string until the first instance of stop
output = output.Substring(0, output.IndexOf(stop));
return output;
}
然后你就可以打电话了
stringBetween(input, "Ep ", " ");
这也假设您知道start
的第一个实例后面跟着您想要的值。