正则表达式:查找括号内同一字符串的所有匹配项

Regexp: find all occurences on same string inside brackets

我已经几天尝试写一些正则表达式来替换括号内的所有 :,请帮助我,所以我有字符串:

render('MyBundle:Default:index.html.twig')
or render('MyBundle::Default::index.html.twig')

我怎样才能得到所有的 : 并将其替换为 / ? 我在尝试类似的东西:

render\(.*([:])

但它只找到最后一个 :

在一般情况下,它看起来像

(?:\G(?!^)|render\(')[^':]*\K:+

regex demo。如果您需要将每个 : 替换为 /.

,请删除最后一个 +

详情:

  • (?:\G(?!^)|render\(') - render\(' 或上一场比赛结束
  • [^':]* - ':
  • 以外的零个或多个字符
  • \K - 丢弃到目前为止匹配的文本的匹配重置运算符
  • :+ - (唯一最终放入匹配值并最终被替换的文本)一个或多个冒号。