我正在尝试从网站中提取交货状态,以便随后可以在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+\";
我不确定如何取出最后一个标签,所以我只提取“已交付”文本。
答案 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