提取网页范围内的文本

时间:2019-01-31 14:32:02

标签: c# asp.net regex

我正在尝试从网站中提取交货状态,以便随后可以在asp gridview中实时显示此状态。

我正在尝试通过正则表达式来执行此操作,但是在尝试设置字符串值时却遇到了问题。

这是html的原始格式:

<span class=" palette-confirm "> Delivered </span>

(<span class=")\s+(palette-confirm)(\n|\r)(">)(\n|\r)\s+

我在regex101中提出了以上内容,但是当我尝试在Visual Studio中的字符串中使用它时,语法不正确。

string pattern = "(<span class=\")\s+(palette-confirm)(\n |\r)(\">)(\n|\r)\s+\";

我不确定如何取出最后一个标签,所以我只提取“已交付”文本。

2 个答案:

答案 0 :(得分:1)

在C#中,反斜杠被视为转义字符。为了保留正则表达式的反斜杠,您需要编写双反斜杠"()(\\n|\\r)\\s+\\"或通过在字符串前放置@符号来告诉C#不要将反斜杠视为转义字符:@"()(\n|\r)\s+\"

答案 1 :(得分:0)

有多少种状态?只需通过or的| .....

通过实际状态文本进行匹配
 \>\s*(Delivered | In\sProcess)\s*\<

这里是一个例子:

var pattern = @"\>\s*(Delivered | In\sProcess)\s*\<";

var str = @"<span class="" palette-confirm ""> In Process</span?";

var result = Regex.Match(str, pattern );

Console.WriteLine(result.Groups[1].Value);

输出

In Process