Author Topic: Нормализация текста  (Read 71 times)

Offline cetsalcoatle

  • Эльрат – дракон света
  • Глобальный модератор
  • Дважды герой
  • *****
  • Posts: 9401
  • Карма: +1077/-373
  • Благородный муж прям и твёрд, но не упрям.
    • View Profile
Нормализация текста
« on: 17 January 2026, 15:56:19 »
  • 0
  • 0
Quote
function normalizeText(text) {
  return text
    .toLowerCase()
    .replace(/(^\s*[а-яa-z])|(\.\s*[а-яa-z])/g, match =>
      match.toUpperCase()
    );
}
/(^\s*[а-яa-z])|(\.\s*[а-яa-z])/g

Как это читать вообще? :what?
WHITE LIVES MATTER.

Всё, что нужно для счастья, — это тело, не страдающее от боли, и душа, свободная от тревог. (с) Эпикур

Останься прост, беседуя с царями,
Останься честен, говоря с толпой;
Будь прям и тверд с врагами и друзьями,
Пусть все, в свой час, считаются с тобой;

Simba mwenda pole ndiye mla nyama

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 8442
  • Карма: +2810/-606
    • View Profile
Re: Нормализация текста
« Reply #1 on: 17 January 2026, 17:14:11 »
  • 2
  • 0
https://ru.wikipedia.org/wiki/Регулярные_выражения

"Найти строку, которая либо (() начинается (^) с пробела (\s) в любом количестве (*), затем содержит ([]) символ из диапазонов а-я и a-z, либо ()|() начинается с символа «.» (\.), затем содержит пробел (\s) в любом количестве (*), затем содержит ([]) символ из диапазонов а-я и a-z".

По мне, во-первых, избыточно, так как ищется одна и та же подстрока, только либо в начале строки, либо после точки, во-вторых, недостаточно, так как пропускается кириллическая ё (часто забывают, что она в таблице после я находится).
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный
Ceterum censeo gebniam esse delendam.
…Когда ты чем-то не интересуешься, то после шокового события ты готов принять любую удобную интерпретацию, которую тебе предложат. Григорий Юдин

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 8442
  • Карма: +2810/-606
    • View Profile
Re: Нормализация текста
« Reply #2 on: 17 January 2026, 17:46:33 »
  • 2
  • 0
Проверил, оказывается, даже каретку можно в скобки заносить.
Так что правильная регулярка:

/(^|\.)\s*[a-zа-яё]/g

Буква "g" в конце означает global, поиск всех вхождений искомой подстроки в заданной строке text. С g callback в replace вызывается по массиву, без неё с первой найденной подстрокой.

Но, кстати, это выражение находит первые символы только после предложений, которые заканчиваются точкой. Если заканчивается на !, ?, … — регулярка не сработает.
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный
Ceterum censeo gebniam esse delendam.
…Когда ты чем-то не интересуешься, то после шокового события ты готов принять любую удобную интерпретацию, которую тебе предложат. Григорий Юдин

Offline cetsalcoatle

  • Эльрат – дракон света
  • Глобальный модератор
  • Дважды герой
  • *****
  • Posts: 9401
  • Карма: +1077/-373
  • Благородный муж прям и твёрд, но не упрям.
    • View Profile
Re: Нормализация текста
« Reply #3 on: 17 January 2026, 18:06:22 »
  • 0
  • 0
Спасибо!  :up:
WHITE LIVES MATTER.

Всё, что нужно для счастья, — это тело, не страдающее от боли, и душа, свободная от тревог. (с) Эпикур

Останься прост, беседуя с царями,
Останься честен, говоря с толпой;
Будь прям и тверд с врагами и друзьями,
Пусть все, в свой час, считаются с тобой;

Simba mwenda pole ndiye mla nyama

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 8442
  • Карма: +2810/-606
    • View Profile
Re: Нормализация текста
« Reply #4 on: 17 January 2026, 18:47:13 »
  • 0
  • 0
А вторые лайки от кого? От автора функции normalizeText? :lol:
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный
Ceterum censeo gebniam esse delendam.
…Когда ты чем-то не интересуешься, то после шокового события ты готов принять любую удобную интерпретацию, которую тебе предложат. Григорий Юдин