Satzzeichen Regex in Java
Erstmal, ich bin Lesen Sie die Dokumentationen wie folgt
http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
Und ich will finden keine Satzzeichen AUßER @',& aber ich verstehe nicht ganz.
Hier :
public static void main( String[] args )
{
//String to be scanned to find the pattern.
String value = "#`~!#$%^";
String pattern = "\\p{Punct}[^@',&]";
//Create a Pattern object
Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
//Now create matcher object.
Matcher m = r.matcher(value);
if (m.find()) {
System.out.println("Found value: " + m.groupCount());
} else {
System.out.println("NO MATCH");
}
}
Ergebnis ist KEIN SPIEL.
Gibt es eine Diskrepanz ?
Dank
MRizq
String pattern = "[\\p{Punct}&&[^@',&]]";
sollte funktionierenKönnen Sie mir einige Unterlagen über diese syntax? Ich habe noch nie gesehen es vor.
siehe den link in der Frage.
Danke. Ich hatte keine Ahnung, Charakter-Klasse Kreuzungen. Schön zu wissen.
InformationsquelleAutor MRizq | 2011-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist matching-zwei Zeichen, die nicht einem. Mit einer (negativen) lookahead sollte die Aufgabe zu lösen:
InformationsquelleAutor Lucero
Können Sie verwenden Charakter Subtraktion hier:
Das ganze Muster stellt eine Charakter-Klasse
[...]
enthält eine\p{Punct}
POSIX Charakter-Klassen, die&&
Kreuzung Betreiber und[^...]
negierte Zeichenklasse.Einen Unicode-modifier kann notwendig sein, wenn Sie planen, auch mit allen Unicode-Satzzeichen:
Dem Muster entspricht jedem Satzzeichen (mit
\p{Punct}
) außer@
,'
,,
und&
.Wenn Sie brauchen, um auszuschließen, mehr Zeichen, fügen Sie Sie negiert die Zeichenklasse. Denken Sie daran, zu fliehen
-
,\
,^
,[
und]
innerhalb einer Java-regex Zeichenklasse/set. E. g. hinzufügen eines backslash und-
Aussehen könnte"[\\p{Punct}&&[^@',&\\\\-]]"
oder"[\\p{Punct}&&[^@',&\\-\\\\]]"
.Java demo:
Ausgabe:
InformationsquelleAutor Wiktor Stribiżew