Java регулярное выражение value.split( "\\." ), "Обратная косая черта" делит символ?
Из чего я понимаю, точка обратной косой черты (\.
) означает один символ любого символа? Так как обратная косая черта - это побег, она должна быть обратная косая черта ("\\."
)
Что это делает для строки? Я только что видел это в существующем коде, над которым я работаю. Из того, что я понимаю, он разделит строку на отдельные символы. Зачем это вместо String.toCharArray()
. Таким образом, это разделяет строку на массив строк, который содержит только один char для каждой строки в массиве?
Ответы
Ответ 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" }.
Ваша формулировка не совсем ясна, но я думаю, что это то, о чем вы просите.