Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用c#regex排除字符串匹配_C#_Html_Regex_String_Negative Lookahead - Fatal编程技术网

使用c#regex排除字符串匹配

使用c#regex排除字符串匹配,c#,html,regex,string,negative-lookahead,C#,Html,Regex,String,Negative Lookahead,我不熟悉正则表达式。我正在努力寻找没有边界的图像。因此,结果应该是第二个图像。下面是试图使用正则表达式进行匹配的文本 <IMG onerror="this.errored=true;" USEMAP="#Map-43" BORDER="0"/> <IMG onerror="this.errored=true;" USEMAP="#Map-43" /> <IMG onerror="this.errored=true;" USEMAP="#Map-43" BORDER=

我不熟悉正则表达式。我正在努力寻找没有边界的图像。因此,结果应该是第二个图像。下面是试图使用正则表达式进行匹配的文本

<IMG onerror="this.errored=true;" USEMAP="#Map-43" BORDER="0"/>
<IMG onerror="this.errored=true;" USEMAP="#Map-43" />
<IMG onerror="this.errored=true;" USEMAP="#Map-43" BORDER="0"/>    

我尝试了下面的正则表达式,但没有成功

<IMG\\s[^((>)&(?!BORDER)]*>
)&(?BORDER)]*>
有人能帮上忙吗?

你可以用它来解析html

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var imgs = doc.DocumentNode.Descendants("img")
    .Where(n => n.Attributes["border"] == null)
    .ToList();

PS:另请参见:

更好的选择是使用html解析器解决此类问题

但这里主要的正则表达式问题是,您将前瞻放在字符类中,这样所有字符都被视为文字字符

<IMG\s(?:(?!BORDER)[^>])*>
])*>
应该做得更好

但这只是为了解释你的正则表达式问题。要解决编程任务,请使用

工作示例:

String html = "<IMG onerror=\"this.errored=true;\" USEMAP=\"#Map-43\" BORDER=\"0\"/><IMG onerror=\"this.errored=true;\" USEMAP=\"#Map-43\" /><IMG onerror=\"this.errored=true;\" USEMAP=\"#Map-43\" BORDER=\"0\"/>";
Console.WriteLine(Regex.Matches(html, @"<IMG\s(?:(?!BORDER)[^>])*>").Cast<Match>().ToList()[0]);
Console.ReadLine();
String html=”“;
Console.WriteLine(Regex.Matches(html,@“)*>”).Cast().ToList()[0]);
Console.ReadLine();
另一种方法是使用jQuery和CSS选择器从客户端获取“无边框属性”图像:

$img = $('img').not('[border]');
链接:


str.indexOf(“BORDER”)对于第二个字符串将为-1。你可以用这个。这三条语句是否都在同一个变量中???@L.B,你的意思是什么?你看过Regexr示例吗?是的,它说的是
0捕获组:
Yes当然,我的regex中没有捕获组。整个正则表达式与完整的2行/标记匹配。
regex.matches(html,@“])*>“”.Cast().ToList()
还提供0个匹配项。我添加了工作代码,使用的代码行非常准确,我不理解您的问题。@goldenparrot他正在尝试解决一个问题。regexp是一种解决方案,这是另一种。