• ベストアンサー

正規表現の置換演算子に変数を埋め込むことをしたいのですが

bear-3の回答

  • ベストアンサー
  • bear-3
  • ベストアンサー率42% (26/61)
回答No.1

こんばんは。 $a="abcd0001" ; $b="0005" ; $a=~ s/abcd([0-9]{4})/abcd$b/; print "$a\n";' とすれば良いと思います 変数名の$の前にエスケープシーケンスは 必要ないです。

関連するQ&A

  • Perl正規表現s置換演算子の末尾にカンマについて

    お世話になります。 Perl正規表現プログラムで、 s置換演算子の末尾に、 カンマと丸カッコでスカラ変数を囲んで、 存在している箇所 たとえば、 s/あいうえお/($hensu = $&) =~ tr{ABC}{abc}, ($hensu) =~ s{123}{123}, ($hensu) /eg; のような正規表現であれば、 上記のtr置換演算子や、s置換演算子それぞれの末尾に、 「 , ($hensu) 」 として、カンマと丸カッコでスカラ変数を囲んで、 存在している箇所は、 どのような意味があるのでしょうか? 以上になります。 PS: ネット上や正規表現の本などを読んでも、 上記したような、 カンマと丸カッコでスカラ変数を囲んでいる パターンの解説を、 見つけられなかった為、 ご質問させていただきました。 ご存じの方がいらっしゃいましたら、 教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 正規表現

    変数$aのなかに変数$bが含まれていたらをperlの正規表現であらわすと どのようになるのでしょうか?if($a=~ /$b/)ではうまくいかないのですか?

    • ベストアンサー
    • Perl
  • 正規表現による置換の規則を破っているのでしょうか?

    辞書の訳語を表示する際、正規表現を使って、次の文字列を含む文字列をゴシック表示しようとしています。 そこで次のようにしたのですが、1行目はうまく置換されますが、2行目は全く駄目です。 $yakugo =~ s/(\[再帰\]|\[現分\]|\[代動\]|\[過分\]|\(再\)|\[規則変化\]|\[不規則変化\])/<B>$1<\/B>/g; $yakugo =~ s/(\[\W+と共に\]|\[\W+詞\W+\]|\[次の\W+\]|\[ふつう\W+\])/<B>$1<\/B>/g; 2行目のような置換の仕方は規則破りなのでしょうか?済みませんが、どなたか、これに替わる書法で、2行目のような意図を達成する正規表現の式をお教え下さい。

    • ベストアンサー
    • Perl
  • 正規表現ですが・・・

    正規表現なんですが(Perlです。) Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt Bb_abcd.txt 上記のabcdの部分をマッチさせるために (?<=Aa_|Bb_).*(?=_aa|_bb|_cc|\.txt) としてみましたが、これでは Aa_abcd_aa.txt Aa_abcd_bb.txt Aa_abcd_cc.txt のabcd_aaやabcd_bbやabcd_ccとマッチしてしまいます。 なにかよい表現の仕方はありますか? まとめてマッチさせる表現が知りたいです。

  • 正規表現 置換

    テキストエディッタで asd_**** asd_xxxx というように変数が混じった複数の記述を asd_****.txt asd_xxxx.txt というように置換できるような正規表現の方法がないものでしょうか

  • 正規表現の書き方に困っております。

    あるSQLのダンプを変換するプログラムをPerlで書いているのですが、 うまく正規表現が書けなくて困っております。 データの途中に,が有ると、うまくいきません。 ''の中に囲まれた,は無視するという正規表現を書きたいのです。 また、'''B'も正しく処理できれば、完璧です。 #!/usr/bin/perl use strict; use warnings; #my $a = qq{'A','B',1}; --> うまくいく  ['A']['B'][1] #my $a = qq{'A,','B',1}; --> うまくいかない ['A] ['] ['] my $a = qq{',','''B',1}; --> もっとうまくいかない ['][']['] if($a =~ /(.+?),(.+?),(.+?)/){ print "[$1]\n"; print "[$2]\n"; print "[$3]\n"; }else{ print "ERR!\n"; } exit; __END__

    • ベストアンサー
    • Perl
  • 正規表現で置換

    正規表現の初心者です。 テキストエディタを使って、「@:」で始まる以外の行の先頭に「//」を挿入してコメントアウトしたいのですが、正規表現がうまく書けません。 検索対象: ^[^(@:)] 置換文字列: // でいいのかなと思ったのですが、[]の中ではグルーピング用の()も文字として認識されてしまうのですね。 どのように書いたら正しく置換されるでしょうか。 どうかご教示ください。

  • 正規表現内での変数の扱いに関して

    正規表現内での変数の扱いに関して あるの変数の文字列が別の変数の文字列を冒頭に含むかどうか判別した上でその差分を抽出するコードを書こうとしています。 $a='komekoron'; $b='kome'; if($a=~/^$b(.+)$/){print $1}; このコードを実行すると「koron」が出力されます。 同様に以下のコードで「:」を出力させたいのですが上手くいきません。 $a='*:'; $b='*'; if($a=~/^$b(.+)$/){print $1}; 出力内容は「*:」 これは変数内の文字列がパタンとして扱われているのでしょうか。どうすれば意図する動作になるでしょうか。ご教授願います。

    • ベストアンサー
    • Perl
  • [perl]正規表現を用いた置換を引数で与えて行いたい

    正規表現で置換を行いたいのですが、後方参照などがうまくいきません。 ---------------------------------------------------- $string = hogehogehoge; $before = (ho); $after = a\1; $string =~ s/$before/$after/g; ←ここの正しい書き方がわからない print "string = $string\n"; ---------------------------------------------------- string = ahogeahogeahoge このような出力結果を得たいのですが string = a\1gea\1gea\1ge のようになってしまい\1が参照されません。 おそらく基本的なことなのでしょうが調べてみても分かりませんでした。 もし他にも使えない記述がありましたら、それも含めて書けるやり方を教えていただけると助かります。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 秀丸での正規表現を使用した置換

    いつもお世話になっております。 秀丸で正規表現を使用した置換処理を行いたいと思うのですが、どうしても正規表現の式が書けません。 どうかご教示下さい。 <置換前> ABC1 あAbCd++ ... ... ・先頭4文字は半角英数字の大文字固定 ・その後ろにタブ ・最後にかな、英数字、記号などの可変長の文字列 上記で1レコードです。 <置換後> ABC1 String 内容 あAbCd++ ... ... ・先頭4文字そのまま ・その後ろにタブを3つ+改行 ・続いて「内容」という文字列+改行 ・最後に可変長の文字列をそのまま+改行 「置換」の正規表現は以下だと思うのですが、英数字4文字と可変長文字列を別々にマッチさせる「検索」がどうしても分かりません。 \0 String\n内容\n\1\n どうかご教示下さい。 <環境> Ver.6.1.4