Я нашел рецензию Автора Обзора HTTP ( RFC 2617 ) очень полезный в понимании использования и потребности в IVS / данные случаи.
Вам не хватает только одного:
>> Regexp.new "\w"
=> /w/
>> Regexp.new "\\w"
=> /\w/
Обратные косые черты - это escape-символы в строках. Если вам нужна буквальная обратная косая черта, вам нужно ее удвоить.
>> string = "[ALERT] Project: Revision ...123456 committed by Me <me@me.com>\n on 2009- 07-28 21:21:47\n\n Fixed typo\n"
=> "[ALERT] Project: Revision ...123456 committed by Me <me@me.com>\n on 2009- 07-28 21:21:47\n\n Fixed typo\n"
>> r = Regexp.new("[A-Za-z]+: Revision ...[\\w]+ committed by [A-Za-z\\s]+")
=> /[A-Za-z]+: Revision ...[\w]+ committed by [A-Za-z\s]+/
>> string[r]
=> "Project: Revision ...123456 committed by Me "
Обычно, если вы вставляете вывод из ваших «разорванных» строк, а не только ввод, вы, вероятно, заметили бы, что w
и s
не экранировались должным образом
Вариант 1:
# Избегайте косой черты: r = Regexp.new ("[A-Za-z] +: Редакция ... [\\ w] + подтверждена [A-Za-z \\ s] +")
Недостаток: вручную экранировать все известные escape-символы
Вариант 2:
# Использовать косые черты в конструкторе r = Regexp.new (/ [A-Za-z] +: Редакция ... [\ w] + подтверждена [A-Za-z \ s] + /)
Недостаток: Нет