正则表达式将替换\ r \ n和>之间的空格<排除span标记之间的空格

时间:2011-06-08 08:26:58

标签: c# regex

我想替换标签之间的\ r \ n和所有空格[例如:><],但不包括标签之间的空格。

<html>\r\n  <body>\r\n    
<p>\r\n      
<input name=\"Directory\" style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\" />\r\n      <span style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\">\r\n  </span>\r\n    
</p>\r\n    
<p>\r\n      
<span style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\"> </span>\r\n      <input name=\"FileName\" style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\" />\r\n       <span style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\"></span>\r\n    </p>\r\n  </body>\r\n</html>

编辑: 以上只是html字符串的一个例子我是如何得到的。我试着为它写一个正则表达式:

private static readonly Regex REGEX_FOR = new Regex(@"(?<!></span)>\\r\\n|[\s]*<");

新编辑:

我也不想在

之前替换/ r / n。这就是我希望它们用于我的段落标记之间的换行符。 我希望我的输出是这样的:

<html><body>  
<p>     
<input name=\"Directory\" style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\" />\r\n      <span style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\">\r\n  </span>\r\n    
</p>
\r\n    
<p>    
<span style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\"> </span><input name=\"FileName\" style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\" />
<span style=\"font-size:11;font-weight:normal;font-style:normal;color:#FF406080\"></span>
</p>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

如前所述,对于reqex查询,最好提供所需输出的示例,而不是相当模糊的描述。也就是说,下面的表达式应该理清你需要的东西。

Search Expression: >(\r\n\s+) <

Replace Expression: > <

\ n \ n \ n \ n \ n令牌将匹配任何空格,您可以安全地删除\ r \ n并仅使用\ s进行匹配,但上面的表达式将强制执行新行是任何匹配的开始模式(假设这是需要的)。

然后根据需要将任何内容添加回span标记:

Search Expression (<span [^>]+>)(</span>)

Replace Expression: $1 $2

答案 1 :(得分:0)

在我的网上regextester查看我的示例

试试这个正则表达式:

string.replaceAll("\\r\\n[ \\t]*"," ")

注意:

  • 这会删除换行符并跟随可选的空格。只要 span 之间没有换行符,就不会替换空格

  • 我认为用单个空格而不是空格替换空格更省事。

  • 如果需要,您可以添加一些正则表达式外观。例如负向前瞻意思是“与以前相同的正则表达式未跟随&lt; / span&gt;
    string.replaceAll("\\r\\n[ \\t]*(?!</span>)"," ")