Regex模式,将替换 和><;不包括span标记之间的空格

本文关键字:span 不包括 空格 之间 lt 模式 替换 gt Regex | 更新日期: 2023-09-27 17:58:34

我想替换标记之间的空格和所有空格[eg:><],但不包括标记之间的th空格。

<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>

Regex模式,将替换
和><;不包括span标记之间的空格

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

Search Expression: >('r'n's+) <
Replace Expression: > <

'' s标记将匹配任何空白,您可以安全地删除''r''n并只使用'' s来进行匹配,但上面的表达式将强制使用一个新行。它是任何匹配模式的开始(假设这是所需的)。

然后根据需要将任何标签添加回跨度标签中:

Search Expression (<span [^>]+>)(</span>)
Replace Expression: $1 $2

看看这个在线regextester,我在这里输入了您的示例

试试这个正则表达式:

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

注:

  • 这将删除换行符和后面的可选空格。只要span之间没有换行符空格就不会被替换。

  • 我认为用单个空格代替空白会更省钱。

  • 如果需要,可以添加一些正则表达式查找
    例如负前瞻,意思是"与以前相同的正则表达式,后面不跟</span>"
    string.replaceAll("''r''n[ ''t]*(?!</span>)"," ")