Подтвердить что ты не робот

Java регулярное выражение value.split( "\\." ), "Обратная косая черта" делит символ?

Из чего я понимаю, точка обратной косой черты (\.) означает один символ любого символа? Так как обратная косая черта - это побег, она должна быть обратная косая черта ("\\.")

Что это делает для строки? Я только что видел это в существующем коде, над которым я работаю. Из того, что я понимаю, он разделит строку на отдельные символы. Зачем это вместо String.toCharArray(). Таким образом, это разделяет строку на массив строк, который содержит только один char для каждой строки в массиве?

4b9b3361

Ответ 1

Я предполагаю, что вам не хватает символов обратной косой черты ( "\" ) в качестве символов escape-символов в литералах Java String. Поэтому, когда вы хотите использовать "\" escape в регулярном выражении, написанном как Java String, вам нужно его избежать; например.

Pattern.compile("\.");   // Java syntax error

// A regex that matches a (any) character
Pattern.compile(".");  

// A regex that matches a literal '.' character
Pattern.compile("\\.");  

// A regex that matches a literal '\' followed by one character
Pattern.compile("\\\\.");

Метод String.split(String separatorRegex) разбивает строку на подстроки, разделенные подстроками, соответствующими регулярному выражению. Итак, str.split("\\.") разделит str на подстроки, разделенные одним литералом '.' характер.

Ответ 2

Регулярное выражение "." будет соответствовать любому персонажу, как вы заявляете. Однако сбежавшая точка "\". будет соответствовать буквальным символам. Таким образом, 192.168.1.1 разделился на "\." приведет к { "192", "168", "1", "1" }.

Ваша формулировка не совсем ясна, но я думаю, что это то, о чем вы просите.