Удалить периоды из конца пунктов уценки - PullRequest
0 голосов
/ 20 июля 2010

У меня есть куча постов, написанных в уценке, и мне нужно удалить точки в конце каждого абзаца в каждом из них

Конец абзаца в уценке ограничен:

  • 2 или более \n с или
  • Конец строки

Однако существуют эти крайние случаи

  1. Эллипсы
  2. Акройнмы (например, я не хочу опускать последний период в «Пресловутый БОЛЬШОЙ», когда он падает в конце абзаца).Я думаю, что вы можете разобраться с этим делом, сказав: «не удаляйте последний период, если ему предшествует заглавная буква, которой сам предшествует другой период» *
  3. Особые случаи: e.g., i.e.,etc.

Вот регулярное выражение, которое соответствует сообщениям, которые имеют оскорбительные периоды, но не учитывает (2) и (3) выше:

/[^.]\.(\n{2,}|\z)/

Ответы [ 2 ]

1 голос
/ 20 июля 2010
(?<!\.[a-zA-Z]|etc|\.\.)\.(?=\n{2,}|\Z)
  • (?<!\.[a-zA-Z]|etc|\.\.) - посмотрите, чтобы убедиться, что периоду не предшествуют такие последовательности, как .T, etc, .. (для многоточия).
  • \. точка
  • (?=\n{2,}|\Z) в поисках конца абзаца уценки (две строки или конец строки)

Тест:

s = """ths is a paragraph.

this ends with an ellipsis...

this ends with etc.

this ends with B.I.G.

this ends with e.g.

this should be replaced.

this is end of text."""
print s.gsub(/(?<!\.[a-zA-Z]|etc|\.\.)\.(?=[\n]{2,}|\Z)/, "") 
print "\n"

Вывод:

this is a paragraph

this ends with an ellipsis...

this ends with etc.

this ends with B.I.G.

this ends with e.g.

this should be replaced

this is end of text
0 голосов
/ 28 июля 2010

Алгоритм совместимый с Ruby 1.8.7:

s = %{this is a paragraph.

this ends with an ellipsis...

this ends with etc.

this ends with B.I.G.

this ends with e.g.

this should be replaced.

this is end of text.}.strip

a = s.split(/\n{2,}/).each do |paragraph|
  next unless paragraph.match /\.\Z/
  next if paragraph.match /(\.[a-zA-Z]|etc|\.\.)\.\Z/
  paragraph.chop!
end.join("\n\n")

>> puts a
this is a paragraph

this ends with an ellipsis...

this ends with etc.

this ends with B.I.G.

this ends with e.g.

this should be replaced

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