• ベストアンサー

正規表現での文字列変換について

アルファベットの変換のときに、 $a = 'abcdefgABCDEFG'; $a =~ s/c/X/g; $a =~ s/C/X/g; という感じのことを良くやるのですが、アルファベットの大文字と小文字を一緒に変換することは出来るのでしょうか? よろしくお願いします。

  • arlie
  • お礼率25% (14/54)
  • Perl
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • hequil
  • ベストアンサー率65% (242/372)
回答No.1

$a =~ s/c/X/gi; とやってみて下さい。

その他の回答 (1)

  • rabbie
  • ベストアンサー率51% (16/31)
回答No.2

下の3つのどれでも大丈夫だと思います。 $a =~ s/c/X/gi; $a =~ s/[cC]/X/g; $a =~ tr/cC/X/;

関連するQ&A

  • 正規表現による文字列の抽出

    $data = 'a b c<a href="x/y/z/hoge.jpg">hoge.jpg </a> …<A HREF = "aa/b/c/hoga.jpg">hoga.jpg</A>…'; 上記の文字列から正規表現で 『x/y/z/hoge.jpg』と『aa/b/c/hoga.jpg』を取り出して配列に格納しようと思っているのですがうまくいきません。 条件は 1.『<a href="』(大文字の場合、またはイコールの前後に半角スペースが含まれる場合もあります。)と『">』に囲まれています。 2.文字列中に何回登場するかは決まっておりません。 3.取り出す文字列の長さはきまっておりません。 以下のように書いてみたのですが…。書き方がわかりません。 どなたかご教授いただけないでしょうか。 よろしくお願いいたします。 while ($data =~ /<a\s[hH][rR][eE][fF].=.\".*?">/g){ push(@arr, $&); } foreach(@arr){print $_,"\n";}

    • ベストアンサー
    • Perl
  • 正規表現 特定の文字列パターン以外を全部消したい

    テキストエディタで"a1"~"h8"まで64種類以外の文字列を一括削除したいと考えています。 消したい文字列は「半角アルファベットaからh、半角数字1~8で構成される2文字ずつの組み合わせ」以外の全ての文字です。改行も消したいです。 (例) たとえば以下のような文字列を、 9. e6 10. e7 11. d7 12. g6 13. g5 14. c5 15. -- 16. c6 以下のようにしたいのです。 e6e7d7g6g5c5c6 正規表現の初心者です。どうぞよろしくお願いします。

  • 一括文字列変換

    $FORM{'color'} $FORM{'background'} $FORM{'name'} $FORM{'title'} $FORM{'comment'} 上記に文字列(例)「a」が入力された場合に「b」に変換したいのですが、一括で変換する場合は $val =~ s/a/b/g; とすればできます。 ただ、$FORM{'comment'}と$FORM{'title'}には変換を反映させたくないのですが、この場合はどのようにすればいいのでしょうか? $FORM{'color'} =~ s/a/b/g; $FORM{'background'} =~ s/a/b/g; $FORM{'name'} =~ s/a/b/g; と一つ一つ設定するしかないのでしょうか?変換したい文字列が莫大にありますので、出来れば一括でできれば助かります。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 文字の変換 (アルファベット)

    文字の変換について教えてください 10進数の1は16進数で1、10はAになります。 ではアルファベットはどうなるんでしょうか? 以下の変換であっているでしょうか? a = c1 b = c2 c = c3 d = c4 e = c5 f = c6 g = c7 h = c8 i = c9 j = d1 k = d2 l = d3 m = d4 n = d5 o = d6 p = d7 q = d8 r = d9 s = e1 t = e2 u = e3 v = e4 w = e5 x = e6 y = e7 z = e8 上記の変換が16進数かどうかもわかりませんが、教えてください。 よろしくお願いします。

  • 正規表現

    正規表現で、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; …の部分はどうやって記述すればいいのでしょうか

    • ベストアンサー
    • Perl
  • javaで文字変換したいんです。

    たとえば "82 A0 82 A2 82 A4 41 42 43 82 A6 82 A8 " という文字列を "あいうABCえお"に変換したい場合どのようにすればいいのでしょう? 変換前の文字コードはS-JISとします。 変換前の文字列はStringに入っているものとします。 String str="82 A0 82 A2 82 A4 41 42 43 82 A6 82 A8 "; //こんな感じ java は初めてで困ってます。 Cなら何とかなるんですが・・・ どうかお知恵をお授けください。

    • ベストアンサー
    • Java
  • 文字列から数字への変換

    文字列から数字への変換にはatoiなどを使うと思うのですが これだと文字として0を変換すると アルファベットなどを変換した場合と 同じになってしまいますよね? 0も入力を受け付けてなおかつ文字列は受け付けないように するにはどのようにすればよいのでしょうか? アドバイス・回答よろしくお願いします

  • perlの正規表現をCで・・

    while($searchwords =~ /^(.).*/g) たとえばperlでこのような文があったとします。 Cでならwhile文おそらくperlでも同じと思いますが 条件が真の時にぐるぐる回ります。 この場合の条件が おそらく一文字目以降を切り取るということだと思います。 $searchwords =~ /^(.).*/gが成立している間?whileするということなのでしょうか? もし$searchwordsに12345678が入っているとすると 一文字ずつ横にずれていくと言うことでしょうか? perlで質問するべきだと思いましたが・・。 Cで書きたいのでどうしたらよいのかと質問しました。 $a =~ s/^(.)//; ならば 行の先頭文字を一個消してaに入れているということになるから char a[] = "123456789"; ならばa[9]になります。 だからa[0] = a[1]ってな感じで一個ずつずらせばいいんだと勝手に思っていますが while($searchwords =~ /^(.).*/g) の場合Cではどのように記述したら良いのでしょうか?あとこの式の意味もわかりやすく教えてください。 こんがらがってしまっている面が強いかもしれません。

  • 文字列を数列に変換

    文字列(アルファベットのみ)を数列に変換するプログラムを作りたいのですが、うまくいきません。 [A = 01、B = 02、~ Z = 26、 Space = 00]とし、例えば入力が「ADAM」であれば、出力は「01040113」となるようなプログラムです。A~Z以外の文字(!, ?, @, 1, 2など)は無視します。 ちなみに言語はJavaです。 誰かご教授いただけないでしょうか?

    • ベストアンサー
    • Java
  • perlでの正規表現について

    文字列のなかの"<タグ>(アルファベット1文字)"すべてに対して置換処理をさせたいのですがうまく動作しません。 現在はこう記述しております。 $str=~ s/(~<(.*?)>\w)/置換文字列/g; 良い方法があれば教えていただけると助かります。

専門家に質問してみよう