2017-05-10 2 views
-4

Mit diesem AufrufWas ist der Unterschied zwischen "c && c" und "[c && c]" in den regulären Ausdrücken von Java?

System.out.println(Pattern.matches("[c&&c]", "c")); 

Ich habe true. Jedoch mit diesem Anruf,

System.out.println(Pattern.matches("c&&c", "c")); 

Ich habe false. Beim zweiten Aufruf werden keine Ausnahmen ausgelöst, was bedeutet, dass es sich um einen gültigen regulären Ausdruck handelt. Ich bin mir jedoch nicht sicher, ob das akzeptabel ist, weil in der Java-API der Operator && nur in Klammern auftritt. Was ist dann die Bedeutung von && im zweiten Anruf?

+0

Haben Sie sich die [Muster Dokumentation] (http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html) für eine Antwort angesehen? – VGR

Antwort

1

Was ist der Sinn des & & im zweiten Aufruf?

[c&&c] ist character class mit Mitteln entweder des Zeichens darin.

Ich wurde wahr.

Da c entweder c&&c entspricht. Grundsätzlich wird [c&] ausreichen.

c&&c bedeutet wörtlich. c gefolgt von & gefolgt von & gefolgt von c. Was nicht passt nur c.

+0

Nur um den ersten Punkt zu erläutern: '[c && c]' ist eine Zeichenklasse bestehend aus 'c',' & ',' & 'oder' c' - was natürlich einer Klasse bestehend aus 'c entspricht 'oder' & ', worauf sich Rahul bezog. – yshavit

1
  • [] können Sie alle Zeichen zwischen ihnen übereinstimmen. So [c&&c] ermöglicht c oder & in der Zeichenfolge angezeigt werden, die Sie versuchen, übereinzustimmen. So erhalten Sie eine erfolgreiche Übereinstimmung für nur c oder für nur &
  • c&&c ist ein Literal, die nur mit c&&c innerhalb eines Textes übereinstimmen wird. Es passt also nicht zu Ihrer Testzeichenkette c.
Verwandte Themen