使用Regex从字符串中提取字符串

时间:2010-05-04 17:17:07

标签: c# regex

我想从视图页面中提取MasterPage值指令。我希望以最快的方式做到这一点,考虑到非常大的aspx页面和非常小的页面。

我认为最好的方法是分两个阶段来做到这一点:

  1. 从视图中提取页面指令部分(使用Regex):
    <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

  2. 然后,提取MasterPageFile属性中的值。

  3. 结果必须是:~/Views/Shared/Site.Master

    我可以帮助某人实施此操作吗?我非常想只使用正则表达式,但我不是正则表达式专家。

    另一件事,你认为Regex是最快的方法吗?

2 个答案:

答案 0 :(得分:1)

这是一个与Page指令匹配的正则表达式,它将具有第1组中MasterPageFile属性的值:

<%@\s?Page.*?MasterPageFile="([^"]+)".*?%>$

你为什么需要它?如果在运行时显示页面时需要知道MasterPageFile,可以使用更简单,更快捷的方法。

答案 1 :(得分:1)

    string a = "<%@ Page Language=\"C#\" MasterPageFile=\"~/Views/Shared/Site.Master\" Inherits=\"System.Web.Mvc.ViewPage\" %>";

    Regex r = new Regex("<%@.*MasterPageFile=\"([^\"]*)\".*%>", RegexOptions.Compiled);
    Match m = r.Match(a);
    if (m.Success)
    {
       // what you want is in m.Groups[1]
    }

Groups是一个包含匹配部分的字符串数组。组[0]是整个匹配,其余的将是正则表达式中括号内的所有内容。所以上面,我用括号包围了你想要的部分。