解析来自html源的短字符串

本文关键字:字符串 html | 更新日期: 2023-09-27 18:05:50

<br />
Your coupon for 50% off MSRP - Inline is: XXXXXXXXXXX<br />
Your coupon for 50% off MSRP - Outdoor is: XXXXXXXXXXX<br /><br />

我想解析优惠券代码。我现在有is(.+?)<br>,但它也包括最后的<br>

解析来自html源的短字符串

试试这样的后视/前视模式:

".*?coupon.*?(?<=: )(''w+)(?=<br />|<br/>)"

将包含单词"coupon"且位于": ""<br />"<br/>"之间的字母数字数据匹配到捕获组1

using System;
using System.Text.RegularExpressions;
public class Program
{
    public static void Main()
    {
        string html = "<br />'n" +
            "Your coupon for 50% off MSRP - Inline is: XXXXXXXXXXX<br />" +
            "Your coupon for 50% off MSRP - Outdoor is: XXXXXXXXXXX<br /><br />";
        MatchCollection matches = Regex.Matches(html, ".*?coupon.*?(?<=: )(''w+)(?=<br />|<br/>)");
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Groups[1]);
        }
    }
}

结果:

XXXXXXXXXXX
XXXXXXXXXXX

小提琴演示

您应该能够做到这一点,甚至不使用Regex。就像

string s = "Your coupon for 50% off MSRP - Outdoor is: XXXXXXXXXXX";
Console.WriteLine(s.Substring(s.LastIndexOf(' ') + 1));

应该工作,只要优惠券代码始终是字符串的最后一部分,加上空格。

编辑:在看到您的编辑并且字符串被<br>包装后的另一种选择,您总是可以用空字符串替换匹配结果-

string s = "Your coupon for 50% off MSRP - Outdoor is: XXXXXXXXXXX<br>";
Console.WriteLine(s.Substring(s.LastIndexOf(' ') + 1).Replace("<br>",""));