1

$line = 'ボブは空想がすべて良いとは決して言いませんでした';

探している: 「ever」という単語のみを一致させてキャプチャします。先読みおよび/または後読みアサーションを使用してこれを行います。

if ( $line =~ /(?<=\s)ever(?=\s)/) {
 print "matched ";
}

置換: 任意のメカニズムを使用して、「ever」という単語とその後のスペースを行から削除します。

$line =~ s/ever\s+//;
print $line ;

Extra-Credit: 任意のメカニズムを使用して、'ever' という単語の文字列への文字オフセットを取得します。

my $result = index($line,'ever');
print $result;

私は試験を書きました。しかし、私は通り抜けていません。これらの回答で何が間違っていますか?

4

1 に答える 1

4
  1. 「マッチアンドキャプチャー」。/(?<=\s)(ever)(?=\s)/
  2. $line =~ s/ever\s+// は単語"ever" を削除せず、"never" から "ever" を削除します。ここでは「\b」を使用する必要があります。
  3. 2 と同じで、「never」の中に「ever」が含まれるため、代わりに「ever」を検索して 1 を追加する必要があります (スペースを追加するため)。文字列の最初の文字のオフセットが 1 であると考える場合は、さらに 1 を追加できます。
于 2011-07-07T10:27:50.070 に答える