我有以下字符串正则表达式
"choose to still go on the trip. <br><br>\r\nNote that when booking"
使用正则表达式进行转换后,我需要将<br>
标记替换为只有一个<br>
,因此字符串将是这样的
"choose to still go on the trip. <br>Note that when booking"
答案 0 :(得分:5)
这可以使用 HTML Agility Pack (开源项目http://html-agility-pack.net)以另一种(更安全)的方式完成。
它会考虑各种符号<br>
,<br/>
,<br />
,而不必担心。这意味着您可以专注于实际任务:替换重复项。
请参阅Remove chain of duplicate elements with HTML Agility Pack,它解释了如何替换重复项的方法。
答案 1 :(得分:4)
如果您需要考虑标签之间有空格的情况,请尝试以下正则表达式:
myInputStr = Regex.Replace(myInputStr,
@"([\b\s]*<[\b\s]*[bB][rR][\s]*/?[\b\s]*>){2,}",
"<br>", RegexOptions.Multiline);
这个正则表达式将用一个实例替换2个或更多个<br>
标签实例,无论标签的形成如何(间距,套管,自闭合等)。
答案 2 :(得分:2)
编辑:如果你不知道你有多少<br>
,你可以这样做:
<br>
拆分字符串并删除空条目。<br>
以下是代码:
string yourString = "choose to still go on the trip. <br><br>\r\nNote that when booking";
var temp =
yourString.Split(new string[] { "<br>" }, StringSplitOptions.RemoveEmptyEntries)
.Where(i => i.Replace(" ", string.Empty).Length > 0);
string result = string.Join("<br>", temp);
答案 3 :(得分:0)
while (text.Contains("<br><br>"))
{
text = text.Replace("<br><br>", "<br>");
}
或
string newString = oldString.Replace("<br><br><br>", "<br>");
newString = newString.Replace("<br><br>", "<br>");
在增加<br>
答案 4 :(得分:0)
Regex.Replace(input, @"(<br\s*/{0,1}>\s*(</\s*br>)*){2,}", "<br>",
RegexOptions.CultureInvariant |
RegexOptions.IgnoreCase |
RegexOptions.Multiline);
使用单个<br>
替换<br/>
或<br></br>
或<br>
的任何两个或多个出现。
这会考虑空格。 <br >
会匹配<br />
或<br > </ br>
。
如果您删除不需要的&#34; \ r \ n&#34;事先你可以省略RegexOptions.Multiline
。