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
.