1

変換するためにperl正規表現を書く必要があります

site.company.com => dc=site,dc=company,dc=com

残念ながら、以下の正規表現を使用して末尾の「、」を削除することはできません。もちろん、次のステートメントで末尾の「,」を削除することもできますが、正規表現の一部として処理することをお勧めします。

$data="site.company.com";
$data =~ s/([^.]+)\.?/dc=$1,/g;
print $data;

上記のコードは次を出力します。

dc=site,dc=company,dc=com,

前もって感謝します。

4

5 に答える 5

4

URL を処理するときは、 などのモジュールを使用することをお勧めしますURI。ただし、この場合は当てはまらないと思います。

このタスクは、分割して結合することで最も簡単に解決できると思います。

my $url = "site.company.com";
my $string = join ",",            # join the parts with comma
             map "dc=$_",         # add the dc= to each part
             split /\./, $url;    # split into parts
于 2013-02-08T12:45:47.797 に答える
2
$data =~s/\./,dc=/g&&s/^/dc=/g;

以下でテスト:

> echo "site.company.com" | perl -pe 's/\./,dc=/g&&s/^/dc=/g'
dc=site,dc=company,dc=com
于 2013-02-08T12:42:03.700 に答える
1

これをやってみてください:

my $x = "site.company.com";
my @a = split /\./, $x;
map { s/^/dc=/; } @a;
print join",", @a;
于 2013-02-08T12:47:31.437 に答える
0

私は/geルートを試すつもりです:

$data =~ s{^|(\.)}{
    ( $1 && ',' ) . 'dc='
}ge;

e = Perl コードとして置換を評価します。

したがって、文字列の開始点またはドットを指定すると、次のように置き換えられます。ピリオドをキャプチャした場合は、','. この結果に関係なく、 を挿入し'dc='ます。

評価されたすべての置換で中括弧スタイルの区切り記号を使用したいことに注意してください。

于 2013-02-08T15:13:36.510 に答える
0

このように置くだけで、

$data="site.company.com";
$data =~ s/,dc=$1/dc=$1/g; #(or) $data =~ s/,dc/dc/g;
print $data;
于 2013-02-08T12:56:52.693 に答える