Noções básicas sobre regex em Java: split ("\ t") vs split ("\\ t") - quando os dois funcionam e quando devem ser usados
Recentemente, descobri que não usei regex corretamente no meu código. Dado o exemplo de uma string delimitada por tabulaçãostr
Eu tenho usadostr.split("\t")
. Agora percebo que isso está errado e, para combinar as guias corretamente, devo usarstr.split("\\t")
.
No entanto, por acaso, deparei com esse fato por puro acaso, pois estava procurando padrões de expressões regulares para outra coisa. Você vê, o código defeituososplit("\t")
está funcionando muito bem no meu caso, e agora estou confuso sobre o porquê de funcionar se for a maneira errada de declarar uma regex para corresponder ao caractere de tabulação. Daí a questão, para realmente entender como o regex é tratado em Java, em vez de apenas copiar o código no Eclipse e não se importar com o porquê de funcionar ...
De maneira semelhante, encontrei um pedaço de texto que não é apenas delimitado por tabulação, mas também delimitado por vírgula. De forma mais clara, as listas delimitadas por tabulações que estou analisando às vezes incluem itens "compostos" que se parecem com:item1,item2,item3
e gostaria de analisá-los como elementos separados, por uma questão de simplicidade. Nesse caso, a expressão de expressão regular apropriada deve ser:line.split("[\\t,]")
, ou estou enganado aqui também?
Desde já, obrigado,