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?
The backslash \ is an escape character in Java Strings. That means backslash has a predefined meaning in Java. You have to use double backslash \\ to define a single backslash. If you want to define \w , then you must be using \\w in your regex.
Because backslash \ has special meaning in strings and regexes, if we would like to tell Perl that we really mean a backs-slash, we will have to "escape" it, by using the "escape character" which happens to be back-slash itself. So we need to write two back-slashes: \\.
You can use '\\' to refer to a single backslash in a regular expression. However, backslash is also an escape character in Java literal strings. To make a regular expression from a string literal, you have to escape each of its backslashes.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With