关于正则表达式:C#正则表达式负前瞻从匹配中排除

C# Regular expressions negative lookahead exclude from match

在文本的某处我有一个带有 href

的链接

1
 ">somelink

我需要将 href 属性中的文本替换为小写,<% %> 括号

的内容除外

应该看起来像:

1
">somelink

我在想这样的事情.. "href="([^"]*[A-Z]+[^"]*)(?:(?<!.*<%[^%]*%>.*)))"" 但它不起作用。

谢谢!


如果你还没有弄清楚,试试这个。

1
2
3
4
5
6
7
8
9
10
private void test()
{
    string t = @"&test2=<%= MyClass2.Text %>&last_test=nothing"">somelink";
    string fixed_string = Regex.Replace(t,"(?<=href="|href="[^"]*%>)([^"]*?)(?=<%|")", TestMatchEvaluator);
}

private string TestMatchEvaluator(Match m)
{
    return m.Value.ToLower();
}

这样的东西应该适合你...

1
2
3
4
5
Regex test = new Regex(@"(?<=(href\\=""))[^<]+", RegexOptions.Compiled);

string htmlCode = @""">somelink";

string result = test.Replace(htmlCode, test.Match(htmlCode).Value.ToLower());