正则表达式上有多行

本文关键字:正则表达式 | 更新日期: 2023-09-27 18:28:26

我有一个来自网站的html文件,我使用正则表达式搜索单词并将这些单词写入文档。我有这样的文本:

<div class="scrollable " style="height: 200px;">
        <div>
            <p>CO-Schrank: nicht ben&ouml;tigtes ausbauen</p>
<p><strong>________________________________________________________________________</strong></p>
<p><strong>==&gt;&nbsp; wird nicht mehr ben&ouml;tigt!<br /></strong>z-B.: IUC</p>
<p>CO-Management in Gen. 2 implementieren</p>
<ol>
<li>Ausbau der PCI-Karten aus ZKA-PC in CO-PC- PC-Sys 02 TP 55, 56, 61 sind noch Profibus im ZKA-PC ==&gt; in CO-PC- PC-Sys 02 greift dann auf CO-PC f&uuml;r Datenaufzeichnung =&gt; Betrieb wieder aufnehmen</li>
<li>Ausbau der IUC</li>
<li>Testaufbau am CO-PC f&uuml;r den CO-Algorithmus und Datenspeicherung</li>
<li>Gen. 2 in CO-Management implementieren- pro Pr&uuml;fling 3 Min. (3 Min. x 48 HG x 10 Messungen)&nbsp;= 1440 Min. = 24 h- Messzeit 1-2 Min.</li>
</ol>

</div></div>

现在我也想要<div>.... </div>中的所有文本。我写了这个代码,但它不起作用:

Match description = Regex.Match(line, "^<div class='"scrollable '"^(.*?)$div>", 
    RegexOptions.Multiline);//multiple line
if (description.Success)
{
    //Console.WriteLine(status_id.Groups[1].Value);
    System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:''Webasto''csv-"+zahl+".txt");
    file.WriteLine(id.Groups[1].Value + ";4;4;" + subject.Groups[1].Value + ";" + due_date.Groups[1].Value+";NULL;"+status_id.Groups[1].Value+";"//+assigned.Groups[1].Value
        +";"
        +priority.Groups[1].Value+";NULL;"+autor.Groups[1].Value+";0;"+created_on.Groups[1].Value+";"+start_date.Groups[1].Value+";"+done_ratio.Groups[1].Value+";"+hours.Groups[1].Value
        +";NULL;"+id.Groups[1].Value+";1;2;0;"+closed.Groups[1].Value+";");
    file.Close();
}

正则表达式上有多行

您对MultiLine的含义有误解(我不怪您,每次使用regex时我都要三思而后行)。MultiLine意味着每一行(以'n结束)都被单独处理。

您需要SingleLine,它将整个字符串视为一行。

附带说明:使用Regex解析HTML是个坏主意。请使用一个不错的HTML解析器

众所周知,应该使用xhtml解析器而不是regex。

无论如何,如果您知道html中使用的字符集是什么,就可以使用regex。如果您仍然想使用正则表达式,那么您可以使用带有单行标志的正则表达式,如下所示:

(?s)<div>.*?<'/div>

工作演示

或者使用正则表达式技巧:

<div>['s'S]*?<'/div>