【问题标题】:Regex with start and end strings带有开始和结束字符串的正则表达式
【发布时间】:2014-02-25 09:48:57
【问题描述】:

我有一个示例代码

<h1>
    <asp:Literal ID="ltAccountTitle" runat="server"></asp:Literal>
</h1>
<p>
   <asp:Literal ID="ltNetBalance" runat="server" Text="Net balance" meta:resourcekey="ltNetBalanceResource"></asp:Literal>
   <span>
       <asp:Literal ID="ltNetBalanceAmount" runat="server"></asp:Literal>
   </span>
</p>

我想写一个正则表达式来查找长字符串中的字符串。

匹配:

<asp:Literal ID="ltAccountTitle" runat="server"></asp:Literal>

<asp:Literal ID="ltNetBalanceAmount" runat="server"></asp:Literal>

实际上,我正在使用下面的代码将所有匹配项放入字符串列表中。我可以用哪个正则表达式得到它?我已经为模式变量尝试了很多东西,但无法解决这个问题。

 var lst = new List<string>();
 var mcol = Regex.Matches(text2, pattern);

 foreach (Match m in mcol)
 {
    lst.Add(m.Value);
 }

【问题讨论】:

  • 只是建议:而不是正则表达式检查htmlagilitypack.codeplex.com
  • 我不确定你想捕捉什么。你能举个例子吗?
  • +1 表示HtmlAgilityPack;正则表达式通常是解析 HTML 的糟糕选择
  • 你只是想要pattern = "&lt;asp:Literal ID=\"[^\"]+\" runat=\"server\"&gt;&lt;/asp:Literal&gt;"
  • 我使用了 HTMLAgilityPack 但它无法找到诸如

标签: c# asp.net regex


【解决方案1】:

您是否尝试仅获取具有 ID 和 runat 服务器标签的文字,如果是,则以下内容对我来说很好,并且正好获得 2 个文字

static void TestRegEx()
{
    string input = "<h1>"
        + "<asp:Literal ID=\"ltAccountTitle\" runat=\"server\"></asp:Literal>"
        + "</h1>"
        + "<p>"
        + "<asp:Literal ID=\"ltNetBalance\" runat=\"server\" Text=\"Net balance\" meta:resourcekey=\"ltNetBalanceResource\"></asp:Literal>"
        + "<span>"
        + "<asp:Literal ID=\"ltNetBalanceAmount\" runat=\"server\"></asp:Literal>"
        + "</span>"
        + " </p>";

    var collection = Regex.Matches(input, "<asp:Literal ID=\"\\w*\" runat=\"server\"></asp:Literal>");

    foreach (Match item in collection)
    {
        Console.WriteLine(item.Value);
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 2014-09-15
    • 1970-01-01
    相关资源
    最近更新 更多