Ruby regex - одинаковое совпадение - PullRequest
0 голосов
/ 06 октября 2018

Мой план:

  1. Получить все после Send to: и конца этой строки.
  2. Получить все между Attn: и концом этой строки.

ПРИМЕЧАНИЕ. Строка Attn может быть необязательной.В этом случае просто верните первую строку.

Строка выглядит следующим образом:

str = <<-MSG
Registry of Credit Recommendations
American Council on Education
One Dupont Circle, NW
Washington, D.C. 20036
Transcript Print Date: 10/03/2018
Sent By:Send To: American University
4400 Massachusetts Avenue, NW
Washington, DC 20016-8001
Attn: Undergraduate Admissions
Jonathan A Jones
30 People's Court
Second Address Line
Third Address Line
Augusta, GA 30909
MSG

Ожидаемое возвращаемое значение должно быть:

American University
Attn: Undergraduate Admissions

** Обратите внимание наЧасть «Attn:» должна быть включена, а не только ее содержание.**

Вот мой подход, который работает только для части Attn, но я не знаю, как получить часть «Американского университета».

regex = /Attn:([^\r\n]+)[\r\n]+/

Тест: http://rubular.com/r/Px4ru6WrAg

Ценю вашу помощь.

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Обратите внимание, что вам не нужно использовать регулярное выражение.

str.each_line.
    map do |line|
      case
      when line.include?("Send To: ")
        line[line.index("Send To: ") + "Send To: ".size..-2]
      when line.include?("Attn: ")
        line[line.index("Attn: ")..-2]
      else
        nil
      end
    end.compact
      #=> ["American University", "Attn: Undergraduate Admissions"]

-2 исключает символ новой строки, заканчивающий каждую строку.

0 голосов
/ 06 октября 2018

Вы можете использовать чередование

(?<=Send To:).*|Attn:.*

  • (?<=Send To:) Позитивный взгляд позади, чтобы утверждать, что слева - Send To:.Затем сопоставьте один или несколько раз любому символу
  • | или
  • Attn:.+ Соответствие Attn: за ним следует один или несколько раз любому персонажу

Regex demo

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