Можно ли использовать регулярное выражение, несмотря на символ новой строки \n
\n
например, этот код работает хорошо
> "|text|".gsub(/\|(.+?)\|/){"###"} => "###"
это не
> "|\n text|".gsub(/\|(.+?)\|/){"###"} => "|\n text|"
Используйте модификатор m для многострочных совпадений:
"|\n text|".gsub(/\|(.+?)\|/m){"###"}
Вот альтернатива модификатору m (специфично для вашего случая):
"|\n text|".gsub(/\|([^\|]+?)\|/){"###"}
Будет соответствовать до следующего |.
|