Comprensión de la expresión regular en Java: división (“\ t”) frente a división (“\\ t”): ¿cuándo funcionan y cuándo se deben usar?

Recientemente descubrí que no he usado correctamente la expresión regular en mi código. Dado el ejemplo de una cadena str delimitada por tabulaciones, he estado usando str.split("\t") . Ahora me doy cuenta de que esto está mal y para hacer coincidir las tabs correctamente, debería usar str.split("\\t") .

Sin embargo, me tropiezo con este hecho por pura casualidad, ya que estaba buscando patrones de expresiones regulares para otra cosa. Verá, la split("\t") código defectuosa split("\t") ha funcionado bastante bien en mi caso, y ahora estoy confundido sobre por qué funciona si es la forma incorrecta de declarar una expresión regular para hacer coincidir el carácter de tabulación. De ahí la pregunta, por el hecho de realmente entender cómo se maneja la expresión regular en Java, en lugar de simplemente copiar el código en Eclipse y no preocuparse realmente por qué funciona …

De manera similar, he encontrado un texto que no solo está delimitado por tabuladores sino que también está delimitado por comas. Más claramente puesto, las listas delimitadas por tabuladores que estoy analizando a veces incluyen elementos “compuestos” que se parecen a: item1,item2,item3 y me gustaría analizarlos como elementos separados, en aras de la simplicidad. En ese caso, la expresión regular de expresiones regulares debería ser: line.split("[\\t,]") , ¿o me equivoco aquí también?

Gracias por adelantado,

Cuando se utiliza "\t" , la secuencia de escape \t se reemplaza por Java con el carácter U + 0009. Cuando se utiliza "\\t" , la secuencia de escape \\ in \\t se reemplaza por Java con \ , lo que da como resultado \t que luego el intérprete de expresiones regulares interpreta como el carácter U + 0009.

Por lo tanto, ambas anotaciones se interpretarán correctamente. Es solo la pregunta cuando se reemplaza con el personaje correspondiente.

\ se considera escape char en java, por lo que para obtener la expresión regular correcta, debe escapar \ con \ y t para indicar la tabulación.

Este tutorial ayudará más