- ベストアンサー
正規表現
正規表現のパターンを変数内に入れて評価することは 可能なんでしょうか? たとえば、 my $value = " 0123"; my $patern = "\s.+"; if( $value =~ /$patern/ ) ~略~ のような感じです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Perlのバージョンが合うなら(5.6以上だったかな?)正規表現パターンを「qr」で囲む方がお勧めです。 (速度的な有利と、正規表現をそのまま書けるので) [hoge@huga hoge]$ cat tmp.pl $\ = "\n"; $patern = qr/\s.+\w/io; print $patern if " 0123" =~ /$patern/; [hoge@huga hoge]$ perl tmp.pl (?i-xsm:\s.+\w) [hoge@huga hoge]$ こんな感じで。
その他の回答 (3)
- osamuy
- ベストアンサー率42% (1231/2878)
変数展開がどのようになり、どんなパターンができるかについての理解が必要ですが、可能です。 こんな感じ: my $value = " 0123"; my $patern = '\s.+'; if( $value =~ /$patern/ ){ print $&, "\n";} 詳しくは、perlopやperlre、perlfaq6などのマニュアルをご覧ください。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
そういう場合は、''で正規表現を囲みます my $value = " 0123"; my $patern = '\s.+'; if( $value =~ /$patern/ ){ print "yes"; } ””の場合は、何も表示されませんが、 ’’の場合はyesが表示されます
- iichiho
- ベストアンサー率37% (416/1114)
正規表現を直接変数に入れることはできません。 理由は、正規表現で加工される前の情報が無いからです。 でも、こういうの(↓)ならできますよ。 $text = 'other'; $text =~ s/^/M/; #sed の置換と同じです。 これで、「$text=Mother」になります。