GDanger
GDanger

Reputation: 1671

Java regex "[.]" vs "."

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

Answers (3)

Harshit Jain
Harshit Jain

Reputation: 11

regular-expression constructs

. => 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

falsetru
falsetru

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

Sergey Kalinichenko
Sergey Kalinichenko

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:

  • The ^ 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 .
  • Dash - 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

Related Questions