使用Ruby替换嵌套表达式

时间:2015-05-12 00:35:32

标签: ruby regex

您如何仅替换下面表达式中括号之间的x:

{ x} x {x } x x {} x{x}{  x}

3 个答案:

答案 0 :(得分:2)

不保留大括号内的空格

您可以将.gsub与后视和前瞻操作员一起使用:

# replace all instances of x within curly braces with y
'{ x} x {x } x x {} x{x}{  x}'.gsub(/(?<={)\s*x\s*(?=})/, 'y')

输出:

"{y} x {y} x x {} x{y}{y}"

保留大括号内的空格

您需要一种稍微替代的方法来保留空格:

'{ x} x {x } x x {} x{x}{  x}'.gsub(/{(\s*)x(\s*)}/, '{\1y\2}')

输出:

"{ y} x {y } x x {} x{y}{  y}"

答案 1 :(得分:2)

您可以使用此模式:

import org.apache.commons.dbcp.BasicDataSource

beans = {
   dataSourceUnproxied(BasicDataSource) {
      driverClassName = 'foo'
      username = 'bar'
      password = 'secret'
      url = 'the_url'
      ...
   }
   ...
}

它也适用于几个x。

细节:

txt.gsub(/(?:\G(?!\A)|{(?=[^{}]*}))[^x}]*\Kx/, 'y')

答案 2 :(得分:0)

<nav class="navbar navbar-inverse" id="nav1" ng-hide="isConnected">
    ...

http://rubular.com/

此解决方案不会保留空格。