- ベストアンサー
置換文字列の中に"?"があると置換できません。
恐れ入ります。 ?”クエスチョンマーク”の置換をしたいのですが できなくて困っています。 例 #!/usr/bin/perl $a='a?a'; $b='bbba?abbbbaaaabbbbabbbbb'; $b=~ s/$a//g; print "$b\n"; 文字列$bから”a?a”を削除しようとしているのですが、 変化しません。 ためしに\?としてみましたが・・・だめでした。 ?を!に変えたい!とかいう人は絶対いると思い 「クエスチョンマーク 置換」 等で検索したのですが、 「0個(=1個もない)、または1個ある場合」を表している」 等の情報ばかりでした・・・ どうか教えてください。。。
- azicyan
- お礼率68% (1434/2088)
- Perl
- 回答数2
- ありがとう数3
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> $a='a?a'; の部分を $a='a[\?]a'; とするか、 $a=quotemeta('a?a'); とすれば期待通りの動作をすると思います。
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
#!C:\Environment\Perl\v5.8.8\bin\perl.exe #正規表現のエスケープ #http://crocro.com/pc/write/hide/chimarl09_01.html#06 $a='a\?a'; $b='bbba?abbbbaaaabbbbabbbbb'; $b=~ s/$a//g; print "$b\n";
お礼
説明が足りずに 申し訳ありませんでした。
補足
実は$aは ユーザーの入力から得たいので・・・
関連するQ&A
- join と split で文字列を操作する場合
にんにちは、 うまく解決する方法を思いつかないので、質問させてください。 以下のスクリプトを実行すると、a から z を * で join して、 その後、* で split するかなと思ったら、split は正規表現として とらえるためでしょうか、エラーになります。 #! /usr/bin/perl -w use strict; my $a = '*'; my $b = join $a , ('a'..'z'); print "$b\n"; my @result = split /$a/,$b; print "$_\n" foreach @result; exit(); $a = '\*'; にすると、split したときに、 余計な \ が残ってしまいます。 任意の(書く時点では分からない)いろんな文字列で 連結したり分割したりする場合のスマートな方法が ありましたら、教えていただけませんか? Perl 5.8 です。お願いします。
- ベストアンサー
- Perl
- 文字列のマッチについて
下記cgiで+、*、?が含んでいるとマッチしないんですが 正しいマッチのさせ方を教えてください。 それと+*?以外にもマッチしない文字があるのでしょうか? ---実行結果--- yy+yyは含んでいない yy*yyは含んでいない yy/yyは含んでいる yy-yyは含んでいる yyyyは含んでいる yy1yyは含んでいる yy=yyは含んでいる yy?yyは含んでいない yy&yyは含んでいる yy yyは含んでいる yy.yyは含んでいる ---Perl--- #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><head><title>counter</title></head>\n"; print "<body>\n"; @data = ('yy+yy', 'yy*yy', 'yy/yy', 'yy-yy', 'yyyy', 'yy1yy', 'yy=yy', 'yy?yy', 'yy&yy', 'yy yy', 'yy.yy'); foreach $a (@data) { $b = $a; if ($b !~ m/$a/){ print "$aは含んでいない";print "<br>"; } else{print "$aは含んでいる";print "<br>";} } print "</body></html>\n";
- ベストアンサー
- Perl
- ”ァー”が含まれている文字を置換すると文字化け
OS:solaris8 perlのver:5.8.6 perlで、”ァー”が含まれている文字列に対し、 全角スペースを半角スペースに置換しようとすると 文字化けしてしまいます。 (”ぁー”でもどうようでした) ”ぃー”や”ぅー”、”ぁ”では 問題無いのですが…。 当方、perl初心者&文字コードに詳しくないため、 原因がよくわからないでいます。 どなたか原因をおわかりの方、 ご教授お願いいたします。 文字コードはEUCです。 以下はソースです my $line = "ファイヴァー スコープ 眼鏡"; $line =~ s/\t/ /g; # タブを半角スペースに置換する print '$line2='.$line."<br>\n"; $line =~ s/ / /g; # 全角スペースを半角スペースに置換する print '$line3='.$line."<br>\n"; #↑ここで文字化けしてしまいます $line =~ s/^\s+//; # 頭の空白を除く print '$line4='.$line."<br>\n"; $line =~ s/\s+$//; # 尻の空白を除く print '$line5='.$line."<br>\n";
- ベストアンサー
- Perl
- Rubyで\を\\に置換したい。
Rubyで"\"マークを"\\"に置換しようとして、以下の様に プログラムを書きましたが、うまくいきません。 "\\aaa"となるようにするには、どうしたらよいでしょうか? %cat aa.txt \aaa %a aa.txt \aaa %cat a #!/usr/bin/ruby while l = gets print l.gsub(/\\/,'\\\\') end
- ベストアンサー
- その他(プログラミング・開発)
- 文字化け
下記のようなcgiスクリプトがあり、test1.cgi から リンクの test2.cgiを呼ぶと 「リンドウ」が文字化けしてしまいます。 文字化けしないようにするには、どうしたらいいでしょうか。 Perl cgi 初心者です。 --------test1.cgi----------------------------------------- #!/usr/bin/perl print "Content-Type: text/html; charset=EUC-JP\n\n"; $name="リンドウ"; print "name=$name<br>"; print "<a href=\"test2.cgi?aaa,${name},bbb\">test2.cgi</a>\n"; ---------test2.cgi------------------------------------------------- #!/usr/bin/perl print "Content-type: text/html; charset=EUC_JP\n\n"; $query = $ENV{'QUERY_STRING'}; print "query=$query\n";
- ベストアンサー
- CGI
- 文字列の置換で・・・
Javaでの文字列の置換についてなんですが ある文字を任意の文字に置換し表示させるとともに 何個の文字を置換したかも同時に知らせたい場合は どのような処理をしたらよいでしょうか? ぜひご協力よろしくお願いします!! (例)入力した文字列に"a"が含まれる場合は"b"に置換し その際に変換した文字数も表示してください。 basic→出力結果: "bbsic" 置換した文字数は1です。
- ベストアンサー
- Java
- 複数ファイルの文字列置換の方法について
あるディレクトリ内にある全てのテキストファイルの中から、「A」という文字列を「B」に置換したいのですが、秀丸もしくはPerlなどで簡単にできますでしょうか? ご存知の方、教えて下さい。 宜しくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- ExcelVBAでの文字列置換について
ExcelVBAでの文字列置換について ExcelVBAは全く初心者のですが、下記の処理を早急に行う必要があり、質問させていただきます。 物品の使用者をエクセル管理しています。 シート1のA列に物品名、B列に現使用者名を入力しています。(約2000件) 一部の使用者に変更があった場合に、シート2に振替リストを シート2 A列=現使用者 B列=新使用者 と作成しています。 シート1のB列:現使用者から、シート2のA列:現使用者と同一な文字列を検索し、シート2B列:新使用者に置換するマクロはどのように書けばよいのでしょうか? 可能であれば、シート2のC列に置換結果を表示させたいです。
- ベストアンサー
- その他MS Office製品
お礼
ああああああ!! すごいです!!! こんな便利なコマンドがあったのですね! ばっちりです。 感謝します!!