Reputation: 1671
I'm trying to use some regex in Java and I came across this when debugging my code.
What's the difference between [.]
and .
?
I was surprised that .at
would match "cat" but [.]at
wouldn't.
Upvotes: 9
Views: 1738
Reputation: 11
. => Any character (may or may not match line terminators)
and to match the dot . use the following
[.] => it will matches a dot
\\. => it will matches a dot
NOTE: The character classes in Java regular expression is defined using the square brackets "[ ]", this subexpression matches a single character from the specified or, set of possible characters.
Example : In string address replaces every "." with "[.]"
public static void main(String[] args) {
String address = "1.1.1.1";
System.out.println(address.replaceAll("[.]","[.]"));
}
if anything is missed please add :)
Upvotes: 1
Reputation: 369074
[.]
matches a dot (.
) literally, while .
matches any character except newline (\n
) (unless you use DOTALL
mode).
You can also use \.
("\\."
if you use java string literal) to literally match dot.
Upvotes: 20
Reputation: 726579
The [
and ]
are metacharacters that let you define a character class. Anything enclosed in square brackets is interpreted literally. You can include multiple characters as well:
[.=*&^$] // Matches any single character from the list '.','=','*','&','^','$'
There are two specific things you need to know about the [...]
syntax:
^
symbol at the beginning of the group has a special meaning: it inverts what's matched by the group. For example, [^.]
matches any character except a dot .
-
in between two characters means any code point between the two. For example, [A-Z]
matches any single uppercase letter. You can use dash multiple times - for example, [A-Za-z0-9]
means "any single upper- or lower-case letter or a digit".The two constructs above (^
and -
) are common to nearly all regex engines; some engines (such as Java's) define additional syntax specific only to these engines.
Upvotes: 4