1

我对 ruby​​ 有点陌生,并且已经进行了大量的谷歌搜索,但似乎无法弄清楚如何匹配这个特定的模式。我使用了 rubular.com,似乎找不到简单的匹配方法。这是我正在尝试做的事情:

我有几种类型的主机,它们采用这种形式:

示例主机组

host-brd0000.localdomain
host-cat0000.localdomain
host-dog0000.localdomain
host-bug0000.localdomain

接下来我有一个案例陈述,我想排除错误(谁不正确?)。我想做这样的事情来匹配一系列字符。但是,它从 host-b、host-c、host-d 开始匹配,并且只匹配一个字符,就像我做了[brdcatdog].

case $hostgroups {  #variable takes the host string up to where the numbers begin
# animals to keep
             /host-[["brd"],["cat"],["dog"]]/: {
             file {"/usr/bin/petstore-friends.sh":
                owner   => petstore,
                group   => petstore,
                mode    => 755,
                source  => "puppet:///modules/petstore-friends.sh.$hostgroups",
             }
}

我可以做类似的事情,[bcd][rao][dtg]但它看起来不是很干净,并且会匹配我不想要的诸如“bad”“cot”“dat”“crt”之类的废话。

有没有一种巧妙的使用方式\A[]我错过了?

谢谢你的帮助。

-伍蒂尼

4

2 回答 2

2

如何使用负前瞻?

host-(?!bug).*

这是RUBULAR 永久链接,匹配除那些讨厌的错误之外的所有内容!

于 2012-09-21T03:46:44.370 回答
1

这是你要找的吗?

host-(brd|cat|dog)

(按照 gtgaxiola 的例子,这里是Rubular 永久链接

于 2012-09-21T03:48:39.593 回答