Можем ли мы использовать реляционный оператор в gsub? - PullRequest
0 голосов
/ 23 марта 2011

Мне нужно заменить символ . на . \n в следующем формате строки.Но есть ограничение: не заменяйте символ . на .\n только в следующей строке шаблона.

"test was done and was negative. Urine dipstick: ph = 6\\n \\342\\200\\242 spec. Grav.  = 1.015"

Мне нужен следующий вывод, например

"test was done and was negative. \n Urine dipstick: ph = 6\\n \\342\\200\\242 spec. Grav.  = 1.015"

Ограничение => "spec. Grav. = 1.015".

Ответы [ 3 ]

1 голос
/ 23 марта 2011
str = "test was done and was negative. Urine dipstick: ph = 6\\n \\342\\200\\242 spec. Grav.  = 1.015"

puts str.sub('. ', ".\n") 

#=> test was done and was negative.
#=> Urine dipstick: ph = 6\n \342\200\242 spec. Grav.  = 1.015

String.sub заменяет только первое совпадение.

0 голосов
/ 23 марта 2011

Вы хотите это?

str.gsub(/\.(?!\n)/, "\.\n")
0 голосов
/ 23 марта 2011
str.gsub(/\.(?! (Grav| =))/, ".\n")

должен сделать работу.

Краткое объяснение

  • \. соответствует любому .
  • (?!) обозначает негативный прогноз. Это означает, что он не будет совпадать с тем, что содержится в этих скобках.
  • (Grav| =) следовательно, точка, за которой следует Grav или =, не будет сопоставлена.
...