我在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", " ");
但我不喜欢它修改源代码,我该怎么办呢?
答案 0 :(得分:1)
默认情况下,.
与换行符不匹配。您可以使用Regex Option Singleline
更改此设置。这会将整个输入字符串视为一行,即该点也与换行符匹配。
Match currentMatch = Regex.Match(contents, "Title: <strong>(.*?)</strong>", RegexOptions.Singleline);
顺便说一句,我希望你知道正则表达式通常不是处理Html的方法吗?