多行正则表达式

时间:2014-06-02 20:10:53

标签: regex puppet

我正在尝试编写一个可以包含一些风格的正则表达式。主要是这些:

node 'test1000.sov.local' {
include AV::AB
}

node 'test1000.sov.local' {
include ZY::ZT::ZZ
include AV::AB
}

node 'test1000.sov.local' {
include ZY::ZT::ZZ
include preinstall::global
include AV::AB
}

理论上它可以是节点

下的任意数量的包含

这是我试图用来掩盖这个的正则表达式。

node\s'test1000.sov.local'\s{\n+.*\n+}

我也尝试过使用

node\s'morpheustest1000.sov.local'\s{\n*.*\n}

前者不能很好地工作,而后者只会得到一个包括但不包含多个包含。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这个表达怎么样:

/((?:node 'test1000\.sov\.local' {)(?:.*)(?:}))/s

<强> Online Demo

  • /s 会将字符串视为单行。通过此更改, .* 将匹配任何字符,即使是换行符,通常也不会匹配。
  • ?: 此处无匹配的组是可选的,但已添加它以使单个组匹配。
  • \. scape . 也很重要,因为它们在Regex中具有特殊含义。