Expressões regulares

Buscando solução quebra linha preservando data e abreviação

Parabéns por resolver o seu problema com a expressão regular que você forneceu. A expressão regular que você usou, `(\.\s{2,})`, procura por pontos seguidos de dois ou mais espaços e substitui essa combinação por `<br><br>`. Isso é útil para transformar quebras de linha no texto em tags `<br>` quando você está trabalhando com HTML.

Aqui está uma explicação detalhada do que cada parte da expressão regular faz:

Aqui está um exemplo de como essa expressão regular poderia ser usada em um contexto de programação:


const textoSemQuebras = "Este é um exemplo.  Este é um exemplo mais longo.";
const textoComQuebras = textoSemQuebras.replace(/(\.\s{2,})/gm, "<br><br>");
console.log(textoComQuebras);
// Saída: "Este é um exemplo.<br><br>Este é um exemplo mais longo."

No exemplo acima, a expressão regular é usada com o método `replace` para substituir todas as ocorrências de pontos seguidos por dois ou mais espaços por `<br><br>`, criando quebras de linha no texto.

O problema no seu script está na expressão regular utilizada para adicionar quebras de linha. Parece que você está tentando adicionar quebras de linha após cada ponto final, exceto em casos específicos

Aqui está uma correção para a expressão regular que deve fornecer o resultado desejado:


const textoComQuebras = textoSemQuebras.replace(/(\.\s*\d{2}\.\d{2}\.\d{4}|\.\s*[A-Z])/gm, " ");

Essa expressão regular faz o seguinte:


const textoFormatado = texto.replace(/(\.(?!\s*(?:\d{2}\.\d{2}\.\d{4}|prof\.\s[A-Za-z])))/gm, "$1\n");

Nesta expressão regular:


const textoFormatado = texto.replace(/(\.(?!(\s*\d{2}\.\d{2}\.\d{4}|prof\.\s[A-Za-z])))/gm, "$1\n");

Nesta nova expressão regular:


const textoFormatado = texto.replace(/(\.(?!(\s*\d{2}\.\s*\d{2}\.\s*\d{4}|prof\.\s[A-Za-z])))/gm, "$1\n");

Aqui está o que mudou: A expressão `\s*\d{2}\.\s*\d{2}\.\s*\d{4}` garante que a data seja capturada mesmo que haja espaços entre os números do dia, mês e ano


const textoFormatado = texto.replace(/(\.(?!(\s*\d{2}\.\s*\d{2}\.\s*\d{4}|prof\.\s[A-Za-z])))/gm, "$1\n");

Nesta expressão regular revisada:


const textoFormatado = texto.replace(/(\.(?!(\d{2}\.\d{2}\.\d{4}|prof\.\s[A-Za-z])))/gm, "$1\n");

const textoFormatado = texto.replace(/(\.\s{2,})/gm, "$1\n");

Nesta expressão regular:

O padrão `(\.\s{2,})` irá capturar um ponto seguido por pelo menos dois espaços em branco. Quando isso acontecer, o grupo de captura `(\.\s{2,})` será substituído por si mesmo (o ponto seguido pelos espaços) mais uma quebra de linha (`\n`), o que resultará na quebra de linha após o ponto seguido por dois ou mais espaços em branco