解析我使用下面的正則表達式匹配下面的語句組:無法從正則表達式
@import URL(normalize.css); @import url(style.css); @import url(helpers.css);
/// <summary>
/// The regular expression to search files for.
/// </summary>
private static readonly Regex ImportsRegex = new Regex(@"@import\surl\(([^.]+\.css)\);", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
這是我的匹配聲明,但,當我試圖讓組了我的比賽,我得到完整的結果,而不是我期待的價值。
e.g預期的結果normalize.css
實際結果@import url(normalize.css);
做到這一點的代碼如下。誰能告訴我我做錯了什麼?
/// <summary>
/// Parses the string for css imports and adds them to the file dependency list.
/// </summary>
/// <param name="css">
/// The css to parse.
/// </param>
private void ParseImportsToCache(string css)
{
GroupCollection groups = ImportsRegex.Match(css).Groups;
// Check and add the @import params to the cache dependancy list.
foreach (string groupName in ImportsRegex.GetGroupNames())
{
// I'm getting the full match here??
string file = groups[groupName].Value;
List<string> files = new List<string>();
Array.ForEach(
CSSPaths,
cssPath => Array.ForEach(
Directory.GetFiles(
HttpContext.Current.Server.MapPath(cssPath),
file,
SearchOption.AllDirectories),
files.Add));
this.cacheDependencies.Add(new CacheDependency(files.FirstOrDefault()));
}
}
你爲什麼要遍歷所有的組時,你只能似乎想的羣體之一?這似乎是一種非常複雜的方式來實現你想要的。 – 2012-07-14 21:58:27
我只想要文件的第一個實例。我得到了Directory.GetFiles方法返回的第一個實例。循環有點混亂。你可以責怪Resharper。 – 2012-07-14 22:00:14