Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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# 解析多个组_C#_Regex - Fatal编程技术网

C# 解析多个组

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> 这是无效的这是

我有一个HTML文件(我不能使用HTML AgilityPack),我想提取一个div的id(如果它有)

  • \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());
}