WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:perlでの文字列replaceコマンドについて。

0:[投稿] 123 [2004/02/03 16:36 ][環境:IE6 perl]

perlでJavaScriptのような文字列のreplace(置換)コマンド
はありますでしょうか?
通常JavaScriptを使っており、perlはそんなに使用しないのです
が、文字列の取りだしでJavaScriptのようなreplaceコマンドが
使用できると便利なのですが、無いのでしょうか?


1:[回答] gun [2004/02/03 16:50 ]

置換することはできます。
Perlの置換はJAVAスクリプトと同等かそれ以上に便利だと思います。
正規表現も使えます。

ex.)変数$xxx中の"hoge"を全て"HOGE"に置き換える。
$xxx =~ s/hoge/HOGE/g;


2:[回答] ミツ [2004/02/03 16:58 ]

つけたし。
http://www.parkcity.ne.jp/~chaichan/src/perlmain.htm
ここの正規表現のあたり。


3:[回答] 123 [2004/02/03 17:02 ]

すいません。私の書き方が間違っていたようです。

JavaScriptなら、

str1 = "__abc__";
str2 = str1.replace(/^__(.*)__$/, "$1"); // abcが取得できる

このような感じで__で囲まれているabcを取得できますが、perlの場合、

$str1 =  "__abc__";
$str1 =~ /^__(.*)__$/;
$str2 = $1;     # abcが取得できる

このように3行になってしまいます。perlの場合これが普通なのでしょうか?
いつもJavaScriptばかりさわっているのでこの途中で正規表現でマッチさせる
のが無駄な動きに思えてしまって...


4:[回答] 通りすがり [2004/02/03 17:28 ]

>>3
  ($str2) = $str1 =~ /^__(.*)__$/;
あるいは
  ($str2 = $str1) =~ s/^__(.*)__$/$1/;
単に行数だけの問題なら
  $str1 =~ /^__(.*)__$/; $str2 = $1;

ちなみに一般的な書き方じゃなくて、こういった書き方も出来るよって程度。


5:[完了] 123 [2004/02/03 18:55 ]

有り難うございます。
($str2) = $str1 =~ /^__(.*)__$/;
このような書き方が出来るのですね。
私も最初このような書き方で出来るかやってみたのですが、

$str2 = $str1 =~ /^__(.*)__$/;

このようにしていたため、$str2には1しかはいらず、これでは出来ないんだな
と勝手に思い込んでしまっていました。戻り値は配列なんですね。

ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World