2015-02-09 139 views
1

我正在爲代理農場寫一個傀儡模板。正則表達式:什麼是正確的正則表達式來匹配所有代理服務器?

我們在阿姆斯特丹,新加坡,紐約等。 在每個地理位置的代理數據中心相應的命名,例如:在新加坡 代理命名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 -%> 

我想要設置的正則表達式是在第一行:

「<%如果@hostname =〜/^ sgproxy \ d +/ - %>」

隨着當前配置的主機名以sgproxy開頭的所有服務器以及之後的任何其他數字將獲得這些行。

我想改變正則表達式,因此會影響到所有的服務器,其中包括代理\ d +。

我嘗試以下的正則表達式的:

^??proxy\d+ 
^..proxy\d+ 
^*proxy\d+ 

無工作。

能否請你幫我找到正確的正則表達式所有服務器在其主機名詞「代理」相匹配?

+1

你已經做到了...:'/代理\ d + /' – arco444 2015-02-09 13:49:13

+0

是什麼'@ hostname'包含哪些內容?你怎麼知道它不起作用?這裏有一個[rubular link](http://rubular.com/r/cms1i3DT2e),它顯示你的正則表達式工作得很好。 – 2015-02-09 14:00:40

回答

0

你不需要整行匹配,你可能會在部分只匹配。這就是說,

/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+/ 

旁註:通常最好使用\A匹配字符串的開頭,而這^