Para melhorar este regex sobre a separação de dígitos

0

Código

m/([+-]?\d+\.\d+)[\s\t]+([+-]?\d+\.\d+)/

Dados

22.585698    3601.767090     D:\measurements\LabCourse_2015deg\image0001_23_mT.png
20.051883    3580.268555     D:\measurements\LabCourse_2015deg\image0002_20_mT.png
17.587862    3550.807617     D:\measurements\LabCourse_2015deg\image0003_18_mT.png

Este código parece se aplicar a linhas com dois dígitos. No entanto, não tenho certeza se está bem escrito em contrário. Difícil de ler.

Como você pode melhorar esse regex?

    
por Léo Léopold Hertz 준영 03.05.2015 / 13:50

3 respostas

3

Baseie sua saída, eu ofereço alguns pontos para melhorar sua regex:

  • Você pode combinar explícito no início da linha, usando ^
  • Se você não usar os grupos de correspondências, não precisará usar parênteses nem usar grupo que não captura ?:
  • \s inclui \t , por isso só precisa de \s .

A regex final pode ser m/^(?:[+-]?\d+\.\d+)\s+(?:[+-]?\d+\.\d+)/

    
por 03.05.2015 / 15:05
1

combina linhas que começam com dois números com números decimais, com números decimais, com os números separados por espaços em branco ASCII. parece ótimo e claro como está.

    
por 03.05.2015 / 14:01
0

Uma otimização que eu adicionaria às sugestões do cuonglm , apenas para tornar a regex mais fácil de manter:

m/^(?:[-+]?\d+\.\d+\s+){2}/

Dessa forma, você pode concentrar outras otimizações na regex em um só lugar.

Além disso, se você souber que os números são números decimais apropriados (ou seja, seus dados não contêm mais de um ponto decimal em uma sequência de dígitos):

m/^(?:[-+]?[\d.]+\s+){2}/
    
por 03.05.2015 / 21:47