正则表达式:匹配所有代理服务器的正确正则表达式是什么?
Regex: What is the right regex to use in order to match all proxy servers?
我正在为我们的代理农场编写一个人偶模板。
我们在阿姆斯特丹、新加坡、纽约等地设有数据中心。
每个地理位置中的代理都相应地命名,例如:
新加坡的代理名为 sgproxy01-10 ,阿姆斯特丹的代理名为 ams2proxy01-30 等...
在编写这个最终会影响我公司所有服务器的模板时,我想编写一个 "IF Statement",它将仅向名称与我尝试的模式匹配的代理服务器添加特定的行设置。
<% 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 开头然后是任何其他数字的服务器都将得到这些行。
我想更改正则表达式,以便它会影响包括 proxy\d+ 在内的所有服务器。
我尝试了以下正则表达式:
^??proxy\d+
^..proxy\d+
^*proxy\d+
None 有效。
你能帮我找到正确的正则表达式来匹配主机名中带有单词 "proxy" 的所有服务器吗?
Puppet uses the same regex as Ruby
/proxy\d+/
应该可以正常工作,Rubular 非常适合快速检查 Ruby 正则表达式。像这样:
不需要匹配整行,可以只匹配部分。也就是说,
/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
匹配字符串的开头而不是 ^
。
我正在为我们的代理农场编写一个人偶模板。
我们在阿姆斯特丹、新加坡、纽约等地设有数据中心。 每个地理位置中的代理都相应地命名,例如: 新加坡的代理名为 sgproxy01-10 ,阿姆斯特丹的代理名为 ams2proxy01-30 等...
在编写这个最终会影响我公司所有服务器的模板时,我想编写一个 "IF Statement",它将仅向名称与我尝试的模式匹配的代理服务器添加特定的行设置。
<% 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 开头然后是任何其他数字的服务器都将得到这些行。
我想更改正则表达式,以便它会影响包括 proxy\d+ 在内的所有服务器。
我尝试了以下正则表达式:
^??proxy\d+
^..proxy\d+
^*proxy\d+
None 有效。
你能帮我找到正确的正则表达式来匹配主机名中带有单词 "proxy" 的所有服务器吗?
Puppet uses the same regex as Ruby
/proxy\d+/
应该可以正常工作,Rubular 非常适合快速检查 Ruby 正则表达式。像这样:
不需要匹配整行,可以只匹配部分。也就是说,
/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
匹配字符串的开头而不是 ^
。