次のテキスト形式の場合、括弧内の「ユーザー番号」の値を取得するにはどうすればよいですか? 形式は同じですが、括弧内の値はファイルごとに異なります。
User name [michael]
User age [25]
User number [2432]
User city [Memphis]
解決策 1:
my ($number) = $file_as_string =~ /User number \[(\d+)\]/;
正規表現の一致は、キャプチャされた値をリスト コンテキストでのみ返します (そのためmy (...)
、単に ではなくmy ...
)
解決策 2:
my $number;
$file_as_string =~ /User number \[(\d+)\]/
and $number = $1;
また、特別な変数 $1、$2 などでキャプチャされたものを保存しますが、注意してください: 一致が失敗した場合、以前に成功した一致の残りの $1 値が変数に忍び込む可能性があります (したがって、and
文字列が一致しない限り、$number は undef になります)。
ユーザー番号のみを取得するには、次のようにします。
/User number \[(\d*)\]/
これで、番号は最初のキャプチャ グループ (括弧で定義()
) で見つかります。[
and]
は正規表現の特殊文字であり、文字クラスを示すため、エスケープすることが重要です。