带空格和缩进的反向引用

时间:2018-03-23 01:59:15

标签: ruby regex

下式给出:

  

点域

     
    

label(for = spec.id)= spec.label

         
      

...一个

    
  

预期结果:

  

点域

     
    

标签(= spec.id)

         
      

= spec.label

             

...一个

    
  

要求:将= spec.和剩余的文本移到下一行并带缩进,如果,

  • = spec.不在括号内
  • 下一行是缩进的

我的尝试:

str = " label(for=spec.id)= spec.label\n a..." str.gsub(/(\s+)([^\s].*)(=\s*spec.*)([\n]+\1\s{2}[^\s].*)/, "#{$1}#{$2}\n#{$1}#{$3}#{$4}")

输出:

" label(for=spec.id)\n = spec.label\n a..."

预期产出:

" label(for=spec.id)\n = spec.label\n a..."

我的反引用\1似乎无法正常工作。 :(

1 个答案:

答案 0 :(得分:0)

你想要这样的东西吗?

  label(for=spec.id)
    = spec.label\n    a...

将缩进空格(\ 1 +附加缩进)插入替换配置区域,如下所示

\1\2\n\1  \3\4

将前一个缩进空格\ 1和额外的缩进空间2设置为新行" = spec.label \ n a ..."在输出中。

Demo,请查看演示

不是红宝石,但可能有一些帮助你解决它。所以我离开了,谢谢你: - )