我在为我们的代理农场写一个木偶模板。
我们在阿姆斯特丹、新加坡、纽约等地都有数据中心。每个地理位置的代理都有相应的命名,例如:新加坡的代理命名为sgproxy01-10,阿姆斯特丹的代理命名为ams2proxy01-30,等等.
在编写最终将影响到我公司所有服务器的模板时,我想编写一个"IF语句“,它将只向代理服务器添加特定行,其名称与我试图设置的模式相匹配。
<% if @hostname =~ /^sgproxy\d+/ -%>
if [ "$(cat $LBMEMFILE)" = "0" ]; then
echo -e "\e[35m Membeship in LB: Yes"
elif [ "$(cat $LBMEMFILE)" = "2" ]; then
echo -e "\e[35m Membeship in LB: No $LISTMEMFILE"
<% end -%>我试图设置的正则表达式位于第一行:
"<% if @hostname =~ /^sgproxy\d+/ -%>“
对于当前的配置,它们的主机名以sgproxy开头的所有服务器,然后任何其他数字都将得到这些行。
我想改变regex,以便它将影响所有服务器,其中包括proxy\d+。
我试过以下正则表达式:
^??proxy\d+
^..proxy\d+
^*proxy\d+都不管用。
你能帮我找到正确的正则表达式来匹配所有服务器主机名中的“代理”这个词吗?
发布于 2015-02-09 14:00:16
发布于 2015-02-09 14:00:29
你不需要匹配整条线,你可以只匹配部分。尽管如此,
/proxy\d+/会成功的。当你还想更精确的时候:
# whether proxies have only letters, digits and underscores in prefix
/\A\w+?proxy\d+/ 或
# whether proxies can not contain spaces in names
/\A\S+?proxy\d+/ Sidenote:通常最好在字符串的开头使用\A匹配,而不是^。
https://stackoverflow.com/questions/28411208
复制相似问题