Regex помогите, работает на Rubular не на производстве Возможная проблема \ n? - PullRequest
1 голос
/ 22 марта 2011

Учитывая это:

Come Find me please. This is paragraph one.\n\nThis is paragraph two. 
Capture everything before me as this is the last sentence.\n\n\n\n
From: XXX XXX <xxxxx@gmail.com>\nDate: Mon, 17 May 2010 10:59:40 -0700\n
To: \"xxx, xxx\" <xxxxx@intuit.com>\nSubject: Re: XXXXXXXX\n\ndone

Lots of other junk here

Что я хочу вернуть:

Come Find me please. This is paragraph one.\n\nThis is paragraph two. 
Capture everything before me as this is the last sentence.

Я использую следующее регулярное выражение, которое отлично работает на Rubular, но не работает в Rails. Идеи почему?

split(/(From:.*Date.*To:.*Subject:.*?)\n/m).first

Спасибо!

Ответы [ 3 ]

1 голос
/ 22 марта 2011

Насколько я тестировал, ваш код работает, за исключением того, что он сопровождается некоторыми "\n". Если вы хотите удалить их, добавьте \n* в начало. Я не уверен, почему у вас есть круглые скобки, а последние ? и \n. Я снял их.

your_string.split(/\n*From:.*Date.*To:.*Subject:.*/m).first

Может быть, использование sub более естественно.

your_string.sub(/\n*From:.*Date.*To:.*Subject:.*/m, '')

Вы также можете сделать это:

 your_string[/.*?(?=\n*From:.*Date.*To:.*Subject:.*)/m]
0 голосов
/ 22 марта 2011

Если слово «От:» уникально,

>> s
=> "Come Find me please. This is paragraph one.\n\nThis is paragraph two. \nCapture everything before me as this is the last sentence.\n\n\n\n\nFrom: XXX XXX <xxxxx@gmail.com>\nDate: Mon, 17 May 2010 10:59:40 -0700\n\nTo: \"xxx, xxx\" <xxxxx@intuit.com>\nSubject: Re: XXXXXXXX\n\ndone"

>> s.split(/From:\s+/).first.strip
=> "Come Find me please. This is paragraph one.\n\nThis is paragraph two. \nCapture everything before me as this is the last sentence."
0 голосов
/ 22 марта 2011

Попробуйте это решение, если хотите извлечь все до From:

txt.gsub(/From:.*$/m, '')

Опция /m заставляет . совпадать с новыми строками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...