无法弄清楚如何为以下内容构建替换模式。
我有一系列如下所示的行:
<span> code <span> code <span/> code </span>
<span> code <span> code <span/> code </span>
<span> code <span> code <span/> code </span>
<span> code <span> code <span/> code </span>
每行开头都有一个空格。它可以是一个空格,也可以是两个空格或N个空格。 在线本身的任何地方都可以有空格。
所需要的是仅在第一个<
字符之前的行首处替换空格。
每个空格应替换为
因此,如果有1个空格字符 - 如果有2个空格,则应替换为
- 应该是
基本上,N个空格字符应替换为N
我可以肯定地使用代码,但这不是最佳选择。 我试图用纯正则表达式完全做到这一点,但无法弄清楚如何构建正确的模式。
欢迎任何语言(Ruby,C#,Python,Perl)的替换示例。
P.S。我正在逐行处理,所以它足以构建替换模式,它可以在一条线的边界内工作。
P.P.S。我很接近前瞻,但仍然无法弄清楚如何在第一次<
之后停止替换空格。
答案 0 :(得分:1)
在c#中这没问题
String s = " <span> code <span> code <span/> code </span>";
Console.WriteLine(Regex.Replace(s, @"(?<=^\s*)\s", " "));
表示替换空白字符,但前提是只有空白字符和字符串的开头。
但所有其他语言都不支持可变长度的后视。
答案 1 :(得分:1)
答案 2 :(得分:0)
红宝石中的双gsub:
str = " <span> code <span> code <span/> code </span>"
p str.gsub(/^ +/){|m| m.gsub(' ', ' ')}
#=> " <span> code <span> code <span/> code </span>"