1

$line = '鲍勃从来没有说过每一个遐想都是好的';

寻找:仅匹配和捕获“ever”这个词。使用lookahead 和/或lookbehind 断言这样做。

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)(曾经)(?=\s)/
  2. $line =~ s/ever\s+// 不会删除单词“ever”,它会从“never”中删除“ever”。此处应使用“\b”。
  3. 与 2 相同,会在“never”中找到“ever”,因此您应该搜索“ever”并添加 1(因为添加了空格)。如果您认为字符串中的第一个字符的偏移量为 1,则可以添加另一个 1。
于 2011-07-07T10:27:50.070 回答