Então, evidentemente, há uma séria falta de documentação para o formato de regex do CrystalControl2. Mas pelo que eu recolhi ao olhar para os poucos exemplos que consegui encontrar, eles usam o agrupamento para extrair o texto necessário. Alguns têm mais grupos do que outros e não ficou claro para mim porquê. Mas aqui está uma rachadura em um regex para combinar os números no log do MSI Afterburner.
\D+(\d+)\.[^,]*,[^0-9,]*(\d+)\.[^,]*$
Como?
Então vamos separar isso. Vamos trabalhar para trás desde o final, pois temos uma âncora de fim de linha ( $
)
-
$
- âncora até o final da linha.Apesar dos exemplos, pareceu-me que esta âncora até o final do arquivo.
-
[^,]*
- corresponde a zero ou mais de qualquer coisa mas vírgulas -
\.
- corresponde a um ponto (ponto decimal).O
\
é necessário porque.
é especial em regex e significa que corresponde a qualquer coisa. O\
faz dele apenas um ponto. -
(\d+)
- corresponde a um ou mais dígitos e agrupa-os com()
.O grupo permite que o resultado da partida seja extraído.
-
,[^0-9,]*
- corresponde a uma vírgula seguida de zero ou mais não dígitos ou vírgulas -
\.[^,]*
- encontre um ponto seguido por zero ou mais não-vírgulas -
\D+(\d+)
- encontre um ou mais não dígitos seguidos de um ou mais dígitos e agrupe os dígitos
Teste:
Como não tenho acesso ao LCD ou ao seu SW, usei o perl para testar isso:
cat file1 | perl -lpe 's/\D+(\d+)\.[^,]*,[^0-9,]*(\d+)\.[^,]*$/:::: xxx /'
Resultados do teste:
80, 21-06-2017 20:42:27, 16.000:::: 1392 xxx 4714
80, 21-06-2017 20:42:28, 6.000:::: 860 xxx 810
80, 21-06-2017 20:42:29, 7.000:::: 860 xxx 810
80, 21-06-2017 20:42:30, 7.000:::: 354 xxx 405
Assim, o regex encontrou os dois últimos números na linha, como pode ser visto entre :::
e xxx