C# 解析多个组
我有一个HTML文件(我不能使用HTML AgilityPack),我想提取一个div的id(如果它有)C# 解析多个组,c#,regex,C#,Regex,我有一个HTML文件(我不能使用HTML AgilityPack),我想提取一个div的id(如果它有) \w只是一个字符,您可能想说一个或多个-\w+ /*-零个或更多的/?我看不出这有什么用 一个或多个非(即[^>]+)可能比+?更好+?将尝试在第一个处停止,但将继续,直到找到匹配的字符串,即: <div id=1>this is not valid</div><div id=2>this is valid___</div> 这是无效的这是
只是一个字符,您可能想说一个或多个-\w
\w+
-零个或更多的/*
?我看不出这有什么用/
- 一个或多个非
(即
)可能比[^>]+
更好+?
将尝试在第一个+?
处停止,但将继续,直到找到匹配的字符串,即:<div id=1>this is not valid</div><div id=2>this is valid___</div>
将匹配整个字符串,而不仅仅是来自这是无效的这是有效的___
- 根据你的问题,下划线之前的所有内容都应该是可选的
(?:(<div id[^>]+>)(\w+))?([\ _]{3,})
(?:(]+>)(\w+)([\\u]{3,})
.试试类似的方法
string html = @"<div id=""div1"">Street ___________________ </div>
<div id=""div2"">CAP |__|__|__|__|__| number ______ </div>
<div id=""div3"">City _____________________ State |__|__|</div>
<div name=""hello"" id=""div4"">City _____________________ State |__|__|</div>
<div name=""house"">City _____________________ State |__|__|</div>
<div id=""notext""></div>";
var rx = new Regex(@"<div(?:(?: id=""(?<id>[^""]+)"")|[^>])*>(?<content>[^<]*)</div>",
RegexOptions.IgnoreCase);
var matches = rx.Matches(html);
foreach (Match match in matches)
{
var id = match.Groups["id"];
var content = match.Groups["content"];
Console.WriteLine("id present: {0}, id: {1}, text: {2}",
id.Success,
id.ToString(),
content.ToString());
}
string html=@“Street”
帽号
城市州|__|__|
城市州|__|__|
城市州|__|__|
";
var rx=new Regex(@“])*>(?[^])*>(?[^aaah…使用Regex解析html!!!@xanatos:这不是真正的html解析,因为需求不担心嵌套项,这是通过Regex解析的主要问题。因此,您可以使用不带id的div和带id的div,并且您希望提取id(如果存在)和这些div的内容,对吗?CAP | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |CAP | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |号“@第二场比赛中我捕获了这个字符串(3,3,3,3,5,3,3,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,比赛比赛中我捕获了这条比赛我在第二场比赛中我捕获这个字符串,我的第二场比赛我捕获了我的比赛我的比赛,我的比赛,我的比赛我捕获这个字符串(124??124??124??124?124;\|(3,U,U,uuuuuuuuuuuuuuUUUUUUUUUU,uuuuuuuuuuuuuuuuuuu\\\\\\124城市“包含字母数字字符,因此应该已匹配。似乎我不小心将转义字符留在了那里。”。已修复。\w\s+
表示一个单词字符和一个或多个空白字符(不是每个字符中的一个或多个)。要说其中一个或多个,可以说[\w\s]+
或(\w|\s)+
。
(?:(<div id[^>]+>)(\w+))?([\ _]{3,})
string html = @"<div id=""div1"">Street ___________________ </div>
<div id=""div2"">CAP |__|__|__|__|__| number ______ </div>
<div id=""div3"">City _____________________ State |__|__|</div>
<div name=""hello"" id=""div4"">City _____________________ State |__|__|</div>
<div name=""house"">City _____________________ State |__|__|</div>
<div id=""notext""></div>";
var rx = new Regex(@"<div(?:(?: id=""(?<id>[^""]+)"")|[^>])*>(?<content>[^<]*)</div>",
RegexOptions.IgnoreCase);
var matches = rx.Matches(html);
foreach (Match match in matches)
{
var id = match.Groups["id"];
var content = match.Groups["content"];
Console.WriteLine("id present: {0}, id: {1}, text: {2}",
id.Success,
id.ToString(),
content.ToString());
}