Como compor regex com condição em Java?
Aug 30 2020
Condição :
- os números podem ser int ou double (total de 8 dígitos)
- os números só podem ser separados por espaços (um ou muitos) e vírgulas (0 ou um)
- vírgulas só podem estar dentro de números (não pode haver vírgulas no início e no final de uma linha)
- pode haver espaços no início da linha (um ou muitos)
- pode haver espaços no final da linha (um ou muitos)
O que eu faço :
([\s]*\d+(\.{1}\d+)?[\s\,\s]+){7}(\d+(\.{1}\d+)?[\s]*){1}
^ this ^
Tudo bem, exceto por uma condição.
Nesta string eu recebo true, mas preciso false:
String s1 = " 0 , 4.4 3.2,, 4.1 2 4 1 7.7";
Eu não posso fazer isso:
Os números podem ser separados por apenas uma vírgula ou nenhuma vírgula, mas neste caso deve haver um espaço (um ou muitos).
Respostas
1 Gryphon Aug 30 2020 at 06:23
Este é o que eu criei para os espaços/vírgulas (também removi algumas partes redundantes):
Pattern.compile("([\\s]*\\d+(\\.\\d+)?(?:\\s*,\\s*|\\s+)){7}(\\d+(\\.\\d+)?[\\s]*)");
Parece fazer o que você quer com a amostra que você forneceu, pelo menos. (O uso de {1}geralmente está implícito para os lugares em que você o usou, então eu os removi)
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas