Как уже отмечался в комментариях, код «обман», сопоставляя пространство, за которым следует символ начиная после 9-го символа. Это, откровенно говоря, ужасный пример того, как делать то, что он утверждает, потому что вы не можете делать это в целом.
Если вы действительно хотите, чтобы найти второй символ, который предшествует пробел, и вы не хитрить и искать для себя, где он может быть, вы могли бы сделать одно из следующих действий:
str = 'RubyMonk Is Pretty Brilliant'
Найдите пробел, за которым следует не-пробел, за которым следует одно или несколько не-пробелов, за которым следует пробел, за которым следует символ. Захват этого персонажа:
str[/ [^ ]+ (.)/,1]
#=> "P"
Найти все символы, которые предшествуют пробел, а затем найти второй один:
str.scan(/(?<=)./)[1]
#=> "P"
Сплит на пространствах (только сохраняя первые три порции, для эффективности) , а затем найдите третий матч, затем найдите первый символ:
str.split(' ',3)[2][0]
#=> "P"
RubyMonk обманывает, он начинает смотреть на 9-й символ. Также он соответствует «P», а не «P» – steenslag