Java Regex "[.]" vs "."

8

Ich versuche, einige Regex in Java zu verwenden, und ich stieß darauf, wenn ich meinen Code debugging.

Was ist der Unterschied zwischen [.] und . ?

Ich war überrascht, dass .at mit "cat" übereinstimmt, aber [.]at nicht.

    
GDanger 05.09.2013, 15:32
quelle

2 Antworten

19

[.] entspricht einem Punkt ( . ) wörtlich, während . einem beliebigen Zeichen außer newline ( \n ) entspricht (es sei denn, Sie verwenden DOTALL Modus).

Sie können auch \. ( "\." , wenn Sie java string literal verwenden) verwenden, um dot wörtlich zu finden.

    
falsetru 05.09.2013, 15:33
quelle
3

Die [ und ] sind Metazeichen , mit denen Sie eine definieren können Zeichenklasse . Alles in eckigen Klammern eingeschlossen wird wörtlich interpretiert. Sie können auch mehrere Zeichen einschließen:

%Vor%

Es gibt zwei spezifische Dinge, die Sie über die Syntax [...] wissen müssen:

  • Das Symbol% ​​co_de% am Anfang der Gruppe hat eine besondere Bedeutung: es invertiert, was von der Gruppe gefunden wurde. Beispiel: ^ entspricht einem beliebigen Zeichen außer einem Punkt [^.]
  • Dash . zwischen zwei Zeichen bedeutet einen beliebigen Codepunkt zwischen den beiden. Zum Beispiel entspricht - einem beliebigen Großbuchstaben. Sie können den Gedankenstrich mehrmals verwenden. Zum Beispiel bedeutet [A-Z] "jeden einzelnen Groß- oder Kleinbuchstaben oder eine Ziffer".

Die beiden obigen Konstrukte ( [A-Za-z0-9] und ^ ) sind für fast alle Regex-Engines üblich. Einige Engines (wie Java) definieren zusätzliche Syntax , die nur für diese Engines gilt.

    
dasblinkenlight 05.09.2013 15:37
quelle

Tags und Links