こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CGIで受け取った日本語文字列を正規表現で

perlでcgiを作っています。
テキストボックスに入れてもらった文字列から正規表現で数字を抽出します。
以下のように、組むと "USA"のような半角英数はただしくマッチしますが、
"アメリカ"や"ドル"などはマッチしません。簡単に解決する方法をお教えください。

my $text = $in_data{'data_text'};
$text =~ tr/+/ /;
$text =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
$text =~ s/[<>"'&\r\n]//g;
$text =~ s/&/&amp;/g;
$text =~ s/</&lt;/g;
$text =~ s/>/&gt;/g;
$text =~ s/"/&quot;/g;
$text =~ s/'/'/g;
$text =~ s/\r\n/<br>/g;
$text =~ s/\n/<br>/g;
$text =~ s/\r/<br>/g;

if ($text =~ /USA (\d+) dollars/){
print "USA $1\n";
}
if ($text =~ /アメリカ (\d+\.\d+) ドル/){
print "アメリカ $1\n";
}
exit;

投稿日時 - 2018-11-20 07:53:13

QNo.9559843

困ってます

質問者が選んだベストアンサー

https://teratail.com/questions/73756
index関数を使うといいみたい。
"perl 日本語 正規表現" で探しましょう。

投稿日時 - 2018-11-20 20:55:18

補足

cgiファイルをUTF8で保存したらうまくいきました。ありがとうございました。

投稿日時 - 2018-11-21 03:49:45

お礼

ありがとうございます。
正規表現で $1で切り出すにはどうすればよいのでしょうか。

quotemetaって、なんでしょう。

投稿日時 - 2018-11-21 03:35:02

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問