1. ホーム
  2. arrays

[解決済み] 文字列のマッチ数をカウントするPerlのショートカットはありますか?

2023-07-07 06:07:13

質問

仮に私が

my $string = "one.two.three.four";

パターンがマッチした回数(3)を取得するために、どのようにコンテキストを処理すればよいですか? これは、ワンライナーを使って行うことができますか?

私はこれを試してみました。

my ($number) = scalar($string=~/\./gi);

を括弧で囲むことで $number で囲むことで、配列のコンテキストを強制し、さらに scalar を使用することで、カウントを取得することができます。しかし、私が得たのは 1 .

どのように解決するのですか?

これは正規表現そのものをスカラーコンテキストに置くことになり、あなたが望むものではありません。代わりに、正規表現をリストコンテキストに置き(マッチした数を取得するため)、その下に その をスカラーコンテキストに置くようにします。

 my $number = () = $string =~ /\./gi;