、:Perlはこの文字列を有効にする最良の方法は何Perlで
7705554200から7705554299
に
7705554200から4299
は、私が知っているどのように最初の6桁を取得しますが、ハイフンの後ろに挿入する方法はわかりません。
#!/usr/bin/perl
use strict;
use warnings;
my $num = '7705554200-4299';
# Check to see number is a range
if ($num =~ /-/)
{
# Pull area code and exchange
my $extract = substr($num, 0, 6);
print "Area code + exchange: $extract\n";
}
、あなたはデバッグ情報をプリントアウトすることができ解決策を見つけたし、おそらく保守が容易です。おめでとう!すべての解決策は正規表現で行うべきではありません! (時にはそれはやむを得ないが、今回はない) – Tanktalus
Tanktalusによるコメントをサポートするために、これは素晴らしい解決策です。クリスタルで綺麗で素敵なメインテーブル。ほとんどの場合、複雑な正規表現に代わるものがあり、通常はより良いコードです。 – zdim
Regexはここでは難しいことではありません(私はあなたがやった方が好きです)、そして参照のために:$ num =〜s /(\ d {6})\ d * - \ K/$ 1/'。唯一のやり方は '\ K'です。これは特定の形の冒険的なlookbehind_です。これらのパターンは、消費することなく何かがあることを_assert_するだけです。 '\ K'は、置換がそれに触れないように、前にマッチしたものをすべて '解放'します。だから我々はそれを再入力する必要はありません。 ['this in perlretut'](http://perldoc.perl.org/5.8.9/perlretut.html#Looking-ahead-and-looking-behind) – zdim