问题
From what I understand, the backslash dot (\.
) means one character of any character? So because backslash is an escape, it should be backslash backslash dot ("\\."
)
What does this do to a string? I just saw this in an existing code I am working on. From what I understand, it will split the string into individual characters. Why do this instead of String.toCharArray()
. So this splits the string to an array of string which contains only one char for each string in the array?
回答1:
My guess is that you are missing that backslash ('\') characters are escape characters in Java String literals. So when you want to use a '\' escape in a regex written as a Java String you need to escape it; e.g.
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("\\\\.");
The String.split(String separatorRegex)
method splits a String into substrings separated by substrings matching the regex. So str.split("\\.")
will split str
into substrings separated by a single literal '.' character.
回答2:
The regex "." would match any character as you state. However an escaped dot "\." would match literal dot characters. Thus 192.168.1.1 split on "\." would result in {"192", "168", "1", "1"}.
Your wording isn't completely clear, but I think this is what you're asking.
来源:https://stackoverflow.com/questions/1480284/java-regular-expression-value-split-the-back-slash-dot-divides-by-char