1

我在 C# 中遇到了正则表达式的问题。我所拥有的是一个代表页面(HTML 等)的字符串。该字符串还在不同的地方包含 \r\n、\r 和 \n,现在我正在尝试匹配字符串中的某些内容:

Match currentMatch = Regex.Match(contents, "Title: <strong>(.*?)</strong>");
string org = currentMatch.Groups[1].ToString();

这很好用,但是,当我想匹配字符串中包含前面提到的任何字符(换行符)的内容时,它不会返回任何内容(空,不匹配):

Match currentMatch = Regex.Match(contents, "Description: <p>(.*?)</p>");
string org = currentMatch.Groups[1].ToString();

但是,如果我在比赛上方添加以下几行,它确实有效:

contents = contents.Replace("\r", " ");
contents = contents.Replace("\n", " ");

但是我不喜欢它修改源,我该怎么办?

4

1 回答 1

1

默认情况下.不匹配换行符。您可以使用Regex Option Singleline更改此设置。这将整个输入字符串视为一行,即点也匹配换行符。

Match currentMatch = Regex.Match(contents, "Title: <strong>(.*?)</strong>", RegexOptions.Singleline);

顺便说一句,我希望你知道正则表达式通常不是处理 Html 的方法吗?

于 2013-01-22T07:34:34.750 回答