Ответ, вероятно, заключается в использовании точечного сопоставителя: он соответствует всему, кроме новых строк в случае по умолчанию.
.match(/\s*By\s+(.+)\s*-\s*([\w, ]+)/)
Единственное предостережение в том, что он может захватывать некоторые пробельные символы в поле «By»линия, если есть.Один из способов:
.match(/\s*By\s+(.*\S)\s*-\s*([\w, ]+)/)
Здесь .*\S
примерно переводится как «соответствует одному или нескольким символам, которые заканчиваются не пробелами, без новых строк».