Понимание регулярных выражений в Java: split ("\ t") против split ("\\ t") - когда они оба работают и когда их следует использовать - PullRequest
30 голосов
/ 21 сентября 2010

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

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

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

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

Ответы [ 2 ]

41 голосов
/ 21 сентября 2010

При использовании "\t" escape-последовательность \t заменяется Java с символом U + 0009.При использовании "\\t" escape-последовательность \\ в \\t заменяется Java на \, в результате чего \t интерпретируется регулярным выражением как анализатор U +0009.

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

0 голосов
/ 21 сентября 2010

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

Этот учебник поможет больше

...