Понимание регулярных выражений в Java: split («\ t») против split («\\ t») - когда они оба работают и когда их следует использовать
===================================================================================================================================

Недавно я понял, что я не использую регулярные выражения в моем коде должным образом. Приведенный пример строки с разделителями табуляции`str`Я использую`str.split("\t")`, Теперь я понимаю, что это неправильно, и для правильного соответствия вкладок я должен использовать`str.split("\\t")`.

Однако я случайно наткнулся на этот факт по чистой случайности, поскольку искал шаблоны регулярных выражений для чего-то другого. Вы видите, неисправный код`split("\t")`в моем случае работал довольно хорошо, и теперь я не понимаю, почему это работает, если это неправильный способ объявления регулярного выражения для соответствия символу табуляции. Отсюда вопрос, чтобы понять, как на самом деле обрабатывается регулярное выражение в Java, а не просто копировать код в Eclipse и не заботиться о том, почему он работает ...

Подобным образом я натолкнулся на фрагмент текста, который не только разделен табуляцией, но и запятыми. Проще говоря, списки, разделенные табуляцией, которые я анализирую, иногда содержат «составные» элементы, которые выглядят так:`item1,item2,item3` и я хотел бы проанализировать их как отдельные элементы, для простоты. В этом случае соответствующее выражение регулярного выражения должно быть:`line.split("[\\t,]")`или я тут тоже ошибаюсь ??

Заранее спасибо,

`"\t"`,[escape-последовательность](http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.6) `\t` заменяется на Java с символом U + 0009. `"\\t"`, escape-последовательность`\\` в`\\t` заменяется на Java с`\`, в результате чего`\t` то интерпретируется[регулярное выражение](https://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html#sum) парсер как персонаж U + 0009.

Таким образом, обе записи будут правильно интерпретированы. Это просто вопрос, когда он заменяется соответствующим символом.



`\` это считается escape-символом в Java, поэтому чтобы получить правильное регулярное выражение, вам нужно бежать`\` с`\` и т для обозначения таб.

[это](https://download.oracle.com/javase/tutorial/essential/regex/) учебник поможет больше