あなたはのカップルを持っていますこれを行う正しい方法を示す正規表現ベースのソリューションです。私たちがあなたのソリューションを構築できるかどうかは興味深いと思っていました。
文字列に単語の配列を作成します。それはうまく動作します。
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
$_ = 'I am a blue ball(apple)';
my @split_array = split /\s+/, $_;
say Dumper \@split_array;
います:
$VAR1 = [
'I',
'am',
'a',
'blue',
'ball(apple)'
];
をあなたがその単語を取得するために$split_array[1]
を使用しています。もちろんそれは正しい言葉ではありません。 $split_array[1]
は配列の2番目の要素です。これは "am"です。
あなたがしたいことは、配列を歩いて "青"を探して、次の文字列を取得することです。このような何か:
foreach (0 .. $#split_array - 1) {
if ($split_array[$_] eq 'blue') {
say "The next word is $split_array[$_ + 1]";
}
}
$#split_array
私たち(4)@split_array
の最後の要素のインデックスを提供します。私たちはの後にの後に "blue"と言いたいので、それから1を引いて、最後の単語の後には単語がありません。
その印刷物:
あなたが望むものではありません
The next word is ball(apple)
。だから何がうまくいったの?さて、split
への元の呼び出しです。空白に分かれていて、 "ボール"と "リンゴ"の間に空白がありません。では、代わりに\W+
(単語以外の文字)に分割してみましょう。
その後、我々は我々の配列内の余分なアイテムを取得:
$VAR1 = [
'I',
'am',
'a',
'blue',
'ball',
'apple'
];
正解。
The next word is ball
(+ W \)を使用する私の($の部分文字列) 'のようなもの= $文字列=〜/ \ bblue \ S + /;' –