- ベストアンサー
正規表現をエスケープさせる関数はあるのでしょうか?\はつけたくないです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
quotemeta がまさにその関数です。 my $k = quotemeta('aa+aa'); # aa\+aa また、メタ文字 \Q~\E を使っても同様で、~部分に含まれるメタ文字が無効化されて評価されます。 my $k = 'aa+aa'; if ($dat =~ /(\Q$k\E)/) { # /(aa\+aa)/ を指定したのと同じ。
その他の回答 (1)
- hara_peko
- ベストアンサー率28% (11/38)
perldoc -f quotemeta してみて下さい。場合によってはこれで間に合うかもしれません。
関連するQ&A
- 正規表現の書き方に困っております。
ある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
- エスケープ文字そのものにマッチさせる正規表現
お世話になっております。 PHPの正規表現でエスケープ文字\そのものにマッチさせる正規表現がなかなか作れません。Perl互換のpreg_replaceなども試してみましたがダメでした。エスケープ文字そのものを削除したいのですが、どうしたらよいでしょうか? $value = ereg_replace ('\\', '', $value);//ダメでした。 $value = preg_replace ('/\\/', '', $value);//同様にダメでした。 $value = preg_replace ('/[\\]/', '', $value);//同様にダメでした。 文字列中に\が入っていたり、単独で\があった場合は必要ないので削除するといった感じです。 $value = ereg_replace ('[][}}{)(!"#$%&\\~|*+,/\^\'<>`;:?\\=]', '', $value); これでいけるかと思ったのですが、\だけ残ってしまいます。最後辺りの\\で\文字それ自体にマッチするかと思うんですが…。 わかる方がいらしたらおしえてください。よろしくお願いします。
- ベストアンサー
- PHP
- 正規表現について
いつもお世話になっております。 perlの正規表現で分からない事があります。 ご存知の方がいらっしゃれば、アドバイスを頂けますようよろしくお願い致します。 (質問内容) 以下のようなプログラムを実行した場合、matchが出力されてしまいます。 $aには、「、IS」を設定しているので、「真」と扱われないと思うのですが、何故、matchが出力されるのでしょうか? また、「偽」として処理をいしたい場合、 どのようにすればよろしいのでしょうか? #!/usr/bin/perl $a = "、IS"; $b = "AIS"; if ($a =~ $b){ print "match\n"; } else{ print "not match\n"; }
- 締切済み
- 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とマッチしてしまいます。 なにかよい表現の仕方はありますか? まとめてマッチさせる表現が知りたいです。
- ベストアンサー
- その他([技術者向] コンピューター)
- 正規表現メタ文字「-」のエスケープ(再質問)
いつもお世話になります。 以前に質問しているのですが、私の質問内容が悪かったため、再度質問をあげさせていただきます。 正規表現のメタ文字のエスケープ処理を行いたいのですが、「-」の記号について、「[」「]」の中に出てきたときのみ([a-z]、[0-9]など)、 一括でエスケープしてくれるような正規表現は何を指定すればよいでしょうか。 例えば、以下の文字列があった場合、 ああaa-bb[0-9]いいい-uuu[a-zA-Z] エスケープ処理された結果、以下のようになる。([]内の-のみエスケープ処理されて、「\-」となっている) ああaa-bb[0\-9]いいい-uuu[a\-zA\-Z] 上記の一括エスケープ処理を行ってくれる正規表現は、何を指定すればよいでしょうか。 宜しくお願いします。
- ベストアンサー
- Java
- URL\正規表現@java
perlメモさん?にPerlでのURLの正規表現はあるのですが Javaで使いたいと思います。 Pattern pattern = Pattern.compile("正規表現"); Matcher matcher = pattern.matcher(String); のステートメントを使う方法をご存知な方おられませんか? Perlメモさん?の正規表現をエディタにコピペしても 不正なエスケープエラー?がでてだめでした。 (http Urlのごちゃごちゃした奴の下から二番目) (「\b(?:」で始まる奴です) なのでエディタに貼り付けて\を\\に置き換えたものを 正規表現の部分にしたところコンパイルはとおりましたが、 正確にマッチしてくれませんでした。 よろしくお願いします。
- ベストアンサー
- Java
- 正規表現の質問です。
実行環境がなく困っています・・ Perlで以下の正規表現はマッチするでしょうか? if("EUC-JP" =~ m|EUC|i ) { print "match"; }
- ベストアンサー
- Perl
- [15]にマッチする正規表現
[15]にマッチする正規表現 [15] にマッチする正規表現を書きたいのですが、うまくいきません。。。。 簡単だ、と思ったのですが。。。 expr "$DATA1" : .*\[15\].* と書くと、中の数字が15じゃなくてもマッチしてしまいます。 expr "$DATA1" : .*15.* であれば"15"にマッチしますが、対象の文字列の都合上、カッコでも識別する必要があり 困っております。[と]をエスケープする目的で\をつける、と思っているのですが、何か 思い違いをしているのでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現教えてください。
正規表現を教えてください。 YYYYMMDD_aa._aa_bbb.txt とあったとき YYYYMMDDは日付をあらわし, aa._aaはサーバ名をあらわして bbb.txtはファイル名をあらわすとき YYYYMMDD aa._aa bbb 値は変化するものでYYYYMMDD_サーバ名_fail.txtは変わらないとした時 それぞれをあらわすperlでの正規表現を教えてください。 まとめてあらわすのではなく、ひとつずつを表す方法でお願いします。
- 締切済み
- Perl