我想要匹配:
<h4>Manufacturer</h4>\n\n Gigabyte\n\n\n
我的正则表达式ATM是:
Match regex = Regex.Match(cleanedUpHtml, "Manufacturer(.*?)\n\n\n", RegexOptions.IgnoreCase);
然而它不起作用。
(。*?)应该匹配所有。
答案 0 :(得分:2)
以下是我认为重要的两件事:
每当您在C#中声明正则表达式模式时,建议使用字符串文字,即@"PATTERN"
。这简化了写正则表达式模式。
RegexOptions.Singleline
必须用于将多行文字视为字符串,即点会与换行符匹配。
这是我的代码段:
var str = "<h4>Manufacturer</h4>\n\n Gigabyte\n\n\n";
var regex = Regex.Match(str, @"Manufacturer(.*?)\n\n\n",
RegexOptions.IgnoreCase | RegexOptions.Singleline);
if (regex.Success)
MessageBox.Show("\"" + regex.Value + "\"");
regex.Value
是
"Manufacturer</h4>
Gigabyte
"
最好的问候。
答案 1 :(得分:1)
我用另一个值替换了\ n,然后正则表达式搜索了我替换的值。它暂时正在工作,但它可能不是最好的方法。任何建议都赞赏。
cleanedUpHtml = cleanedUpHtml.Replace("\n", "p19o9");
Match regex = Regex.Match(cleanedUpHtml, "Manufacturer(.*?)p19o9p19o9p19o9", RegexOptions.IgnoreCase);
答案 2 :(得分:0)
通常我更喜欢在使用正则表达式之前从html标签和换行符中清除字符串。
(.*?)
停止使用\ n characer捕获,您可以使用更通用的组,例如([\w|\W]*?)