正则表达式上有多行
本文关键字:正则表达式 | 更新日期: 2023-09-27 18:28:26
我有一个来自网站的html文件,我使用正则表达式搜索单词并将这些单词写入文档。我有这样的文本:
<div class="scrollable " style="height: 200px;">
<div>
<p>CO-Schrank: nicht benötigtes ausbauen</p>
<p><strong>________________________________________________________________________</strong></p>
<p><strong>==> wird nicht mehr benö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 ==> in CO-PC- PC-Sys 02 greift dann auf CO-PC für Datenaufzeichnung => Betrieb wieder aufnehmen</li>
<li>Ausbau der IUC</li>
<li>Testaufbau am CO-PC für den CO-Algorithmus und Datenspeicherung</li>
<li>Gen. 2 in CO-Management implementieren- pro Prüfling 3 Min. (3 Min. x 48 HG x 10 Messungen) = 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>