
|(パイプ)以外をエスケープしてマッチしているか判定をさせたいのですが、スマートな方法をご教授して頂けないでしょうか?
下記は、自分で作ってみたものですが、イマイチなので・・・
それと「?」「*」「+」「|」以外でも\Qでエスケープされない文字ってあるのでしょうか?
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print<<"end";
<HTML><BODY>
end
$a = "http://www.excite.co.jp/index.html?12";
$b = "index.html?12";
$c = $a;
$c =~ s/\?/<-hatena->/g;
$c =~ s/\*/<-asuta->/g;
$c =~ s/\+/<-plus->/g;
$d=$b;
$d =~ s/\?/<-hatena->/g;
$d =~ s/\*/<-asuta->/g;
$d =~ s/\+/<-plus->/g;
if($c=~ m/$d/i){$match_j="ok";}
print<<"end";
a: $a<br>
b: $b<br>
c: $c<br>
d: $d
<br>($c=~ /\Q$d\E/i)
<br>match:$match_j
</BODY></HTML>
end
No.1ベストアンサー
- 回答日時:
> |(パイプ)以外をエスケープしてマッチしているか判定をさせたい
正規表現用のエスケープ関数 quotemeta を使ってエスケープした後、| だけアンエスケープした文字列を使えばよいでしょう。
$d = quotemeta($b);
$d =~ s/\\\|/|/g;
if ($a =~ /$d/i) { $match_j = "ok" }
または | 区切りで分割し、それぞれの文字列をエスケープした後、| で連結するというのもありです。
$d = join '|', map quotemeta, split /\|/, $b;
if ($a =~ /$d/i) { $match_j = "ok" }
※共に $a は加工する必要がないので、$c は不要です。
> 「?」「*」「+」「|」以外でも\Qでエスケープされない文字ってあるのでしょうか?
「されない」ではなく「される」文字では?それらの文字は全てエスケープされますよ?
\Q や quotemeta でエスケープされないのは、\w にマッチする文字だけです。その他(\W にマッチする文字)は全てエスケープされます。
leaz024さん、回答ありがとうございました。
$d = quotemeta($b);
$d =~ s/\\\|/|/g;
if ($a =~ /$d/i) { $match_j = "ok" }
まさに私のやりたかったことです。
助かりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Wallpaper Engineでおすすめの...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
perlで2次元配列をサブルーチ...
-
Strawberry Perl for Windows ...
-
ターミナルで特定の文字と文字...
-
INDIRECT 横に再度抽出したい
-
Perl 数値にスラッシュを入れる...
-
Perlの全角スペース 文字化け?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
Perlで時間の計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
この正規表現を教えて!
-
特定の正規表現について教えて...
-
8進エスケープとは
-
【正規表現】コメントアウトさ...
-
正規表現
-
条件にマッチした行数のカウント
-
逆スラッシュを使わずにメタ文...
-
なんで真面目な出会いを求める...
-
正規表現。行頭が○○以外にマッ...
-
Perl 正規表現に関して
-
現在、改行コードを含めた任意...
-
これは大きなお世話ですよね? ...
-
perlで記号除去を行いたいので...
-
正規表現で「高」という文字を...
-
正規表現の o オプションの意味...
-
マッチングアプリで新しくアカ...
-
記号とあらば、1文字でも全て...
-
正規表現-数字
-
何故、日本は未だに数字を3桁...
-
CSVファイルの中で、「 , 」カ...
おすすめ情報