- ベストアンサー
正規表現
正規表現で、eオプションを使ったとき、 1度の解析で、aはAに、bはBに変換したい場合、 $_ = "axzzzbyzzc"; s/(a|b)/ ($1 eq "a") ? "A" : "B" /eg; というのは動作したのですが、 aはA、bはB、cはCと変換したい場合、 $_ = "axzzzbyzzc"; s/(a|b|c)/…/eg; …の部分はどうやって記述すればいいのでしょうか
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
半角アルファベットの小文字を大文字にしたいというのであれば、 置き換えを使って $hoge =~ tr/a-z/A-Z/; または $hoge = uc($hoge); a~cまでというなら $hoge =~ tr/a-c/A-C/; または $hoge =~ tr/abc/ABC/; というのが一般的な方法です。 どうしても s/~/~/; を使いたいなら $hoge =~ s/(a|b|c)/uc($1)/eg; または $hoge =~ s/(\w)/uc($1)/eg;
その他の回答 (1)
- GuruGuru22
- ベストアンサー率51% (177/346)
回答No.1
trってのがあるよ。
質問者
お礼
簡略化して質問したので、実際はaをAに変えるという単純な置換ではないんです^^; eオプションをつかったときの if elseの使い方を知りたかったのですが、自己解決致しました。 …の部分を if($1 eq "a"){"A"} elsif($1 eq "b"){"B"} elsif($1 eq "c"){"C"} としたらできました。 でもtrの使い道をよくしらなかったので、大変参考になりました。ありがとうございます。
お礼
参考になりました。 ucなんてものもあるんですね… どうもありがとうございました。