※ ChatGPTを利用し、要約された質問です(原文:CGIで受け取った日本語文字列を正規表現で)
CGIで受け取った日本語文字列を正規表現で数字を抽出する方法
このQ&Aのポイント
CGIで受け取った日本語文字列から正規表現を使って数字を抽出する方法を教えてください。
組んだ正規表現で半角英数の「USA」のような文字列はマッチしますが、「アメリカ」や「ドル」はマッチしません。どのように解決できるでしょうか。
質問者はCGIで受け取ったテキストボックスの文字列から数字を抽出したいと考えていますが、現在の正規表現では「USA」の数字はマッチしますが、「アメリカ」や「ドル」はマッチしません。解決方法を教えてください。
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/&/&/g;
$text =~ s/</</g;
$text =~ s/>/>/g;
$text =~ s/"/"/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;
お礼
ありがとうございます。 正規表現で $1で切り出すにはどうすればよいのでしょうか。 quotemetaって、なんでしょう。
補足
cgiファイルをUTF8で保存したらうまくいきました。ありがとうございました。