Как сопоставить текст между двумя словами (a ..b) до первого появления конечного слова (b)

#ruby #regex #rubular

#ruby #регулярное выражение #rubular

Вопрос:

Может ли кто-нибудь помочь мне сопоставить текст между From и первым появлением Subject из следующего набора строк,

Ввод

 Random Line 1
Random Line 2
From: person@example.com
Date: 01-01-2011
To: friend@example.com
   Subject: This is the subject line
Random Line 3
Random Line 4
   Subject: This is subject
This is the end
  

Вывод

 From: person@example.com
Date: 01-01-2011
To: friend@example.com
   Subject: This is the subject line
  

Я попробовал со следующим регулярным выражением,

 /(From:.*(?i)Subject:.*?)n/m
  

Приведенное выше регулярное выражение выбирает до последнего предмета

Комментарии:

1. @AvinashRaj Я мало работал с регулярными выражениями. Можете ли вы подробно объяснить мне модификатор dotall?

Ответ №1:

Это работает (см.: http://rubular.com/r/Lw9rhfwVGt ):

 /(From.*?Subject.*?)n/m