[英]Substitute leading spaces and terminate matching before particular character
无法弄清楚如何为以下内容建立替换模式。
我有以下几行:
<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)上进行此替换的示例。
PS我正在逐行处理,因此足以构建替换模式,该模式将在单个行的边界内工作。
PPS我是向前看符号足够接近,但还是无法弄清楚如何先停后更换的空间<
。
在C#中这没问题
String s = " <span> code <span> code <span/> code </span>";
Console.WriteLine(Regex.Replace(s, @"(?<=^\s*)\s", " "));
均值替换空白字符,但前提是只有空白字符和之前的字符串开头。
但是所有其他语言均不支持可变长度后向。
红宝石中的双gsub:
str = " <span> code <span> code <span/> code </span>"
p str.gsub(/^ +/){|m| m.gsub(' ', ' ')}
#=> " <span> code <span> code <span/> code </span>"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.