Corresponder caracteres de nova linha em R Regex

Gustavo du Mortier 30 janeiro 2023
  1. Sequências de nova linha em ambientes diferentes
  2. Teste Regex com sequências de nova linha
Corresponder caracteres de nova linha em R Regex

Embora as expressões regulares (abreviadamente regex) sejam uma forma bastante universal de definir padrões de strings, esses padrões podem comportar-se de forma diferente em diferentes plataformas, particularmente quando a regex pretende combinar caracteres especiais, tais como quebras de linha. Neste artigo, iremos analisar diferentes formas de incluir quebras de linha dentro de expressões regulares em R.

Sequências de nova linha em ambientes diferentes

Em ambientes Linux, o padrão \n está em correspondência com uma nova sequência de linhas. No Windows, no entanto, a quebra de linha corresponde ao \r, e em Macs antigos, ao \r.

Se precisar de uma expressão regular que corresponda a uma nova sequência de linhas em qualquer uma dessas plataformas, poderá utilizar o padrão \r?\n para corresponder às sequências de caracteres de terminação de linha \n e \r?\n.

Terá ambientes Linux e Windows cobertos com essa opção, embora o padrão não corresponda correctamente às quebras de linha em Macs antigos. Para cobrir também Macs antigos, poderá utilizar o padrão \r?\n|\r que também corresponda ao \r. Uma versão mais correcta deste padrão seria: (\r\n|\r|\n).

Teste Regex com sequências de nova linha

Muitos websites oferecem a possibilidade de testar expressões regulares. A maioria deles trabalha como ambientes Linux, encontrando correspondência em strings com line feeds ao testar o padrão \n. Mas não encontram uma correspondência quando se testa o padrão \r\n. Exemplos destes sites são Regex101 e regex tester in extensionclass.

Outros sítios de testes podem mostrar comportamentos diferentes, tal como acontece com ambientes operacionais diferentes. Por exemplo, Regex Storm funciona mais como plataformas Windows, encontrando correspondências entre strings com quebras de linha e o padrão \r\n.

Artigo relacionado - R Regex