我正在尝试在我的移动应用程序中进行链接重写(用ruby编写)。我希望它能够用一个正则表达式完成这两个重写:
m.example.com -> www.example.com
m.subd.example.com -> subd.example.com
我最接近这个:
m\.([a-z\.]*)example\.com
用这个:
$1example.com
这适用于m.subd.example.com,但由于我的“www”,m.example.com失败了。异常。
我这样做很多,所以我希望它非常快,这就是为什么我试图避免使用任何代码,只是一个正则表达式。可能吗?正如我所不知道的正则表达式有一个奇特的功能吗?
答案 0 :(得分:0)
我不知道Ruby,但是这里有一个Perl脚本可以完成你给出的示例。可能是它可以翻译。
#!/usr/local/bin/perl
use strict;
use warnings;
my @list = qw/m.example.com m.subd.example.com/;
my $re = qr#^m\.(.*)(example\.com)$#;
foreach(@list) {
print $_;
s/$re/($1 || "www.") . $2/e;
print " -> $_ \n";
}
<强>输出:强>
m.example.com -> www.example.com
m.subd.example.com -> subd.example.com
答案 1 :(得分:0)
我试图避免使用任何代码,只需一个正则表达式
正则表达式是代码。更复杂的正则表达式需要更长的运行时间。您需要编写一些代码或运行两个正则表达式。
result = subject.gsub(/m\.([a-z.]*)example\.com/, '\1example.com').gsub(/^example\.com/, 'www.example.com')