Регулярное выражение неправильное и / или неправильное выражение в этом - PullRequest
1 голос
/ 07 июля 2011

$ line = 'Боб никогда не говорил, что все задумчивости были хорошими';

Взгляд: Подберите и поймайте ТОЛЬКО слово «когда-либо». Делайте это, используя утверждения типа «взгляд вперед» и / или «взгляд назад».

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

замена: удалите слово «когда-либо» и пробел после него, используя любой механизм, какой захотите.

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

Extra-Credit: Получить смещение символа в строку слова 'ever', используя любой механизм, который вы захотите.

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

Я написал экзамен. но я не прошёл. Что не так в этих ответах?

1 Ответ

4 голосов
/ 07 июля 2011
  1. "Матч и захват ". / (? <= \ S) (когда-либо) (? = \ S) / </li>
  2. $ line = ~ s / ever \ s + // не удалит word"ever", оно удалит "ever" из "never" Здесь следует использовать «\ b».
  3. То же, что и 2, будет искать «всегда» в «никогда», поэтому вы должны искать «всегда» и добавлять 1 (из-за добавления пробела). Вы можете добавить еще 1, если считаете, что 1-й символ в строке имеет смещение 1.
...