Hier sind einige Punkte, auf die Sie bei regulären Java-Ausdrücken stoßen sollten.
Ich habe das Gefühl, dass Menschen, die häufig reguläre Ausdrücke in anderen Sprachen verwenden, davon abhängig sind.
Verwenden Sie das Escape-Zeichen \
, wenn Sie eine Escape-Sequenz schreiben.
Wenn Sie jedoch "Backslash" im Java-String-Typ ausdrücken möchten, müssen Sie "\" verwenden, eine Art Escape-Sequenz.
Ich habe einen ganzen Tag verschwendet.
Code, der einen Kompilierungsfehler auslöst
void check() {
if (isFind("hoge.com")) {
//Kann nicht rennen
}
}
boolean isFind(String text) {
//Kompilierungsfehler!!!!!
Pattern p = Pattern.compile("\.com");
return p.matcher(text).find();
}
Code, der kompiliert wird
void check() {
if (isFind("hoge.com")) {
//Kann ausgeführt werden
}
}
boolean isFind(String text) {
Pattern p = Pattern.compile("\\.com");
return p.matcher(text).find();
}
Der Punkt ist, dass Sie, wenn Sie die Escape-Sequenz "." In anderen Sprachen darstellen möchten, "\." Schreiben müssen. Der Wortlaut hier ist verwirrend. Bitte lesen Sie den Kommentarbereich.
Matcher # group (int)
ist nicht sofort verfügbarDie group (int)
-Methode der Matcher-Klasse gibt einen Laufzeitfehler aus, wenn Sie die find ()
-Methode nicht verwenden.
Dies liegt daran, dass die Methode find ()
nach einer Zeichenfolgenübereinstimmung sucht.
Die Methode group (int)
ist nur der Getter des Strings, der mit der Methode find ()
übereinstimmt.
Code, der einen Laufzeitfehler auslöst
Pattern p = Pattern.compile("(A*).");
void print() {
System.out.println(extract(AAABBB));
}
String extract(String text) {
Matcher m = p.matcher(text);
//Laufzeit Fehler!!!!!
return m.group(1);
}
Code, der ordnungsgemäß ausgeführt werden kann
Pattern p = Pattern.compile("(A*).");
void print() {
System.out.println(extract(AAABBB)); //Ausgabe: AAA
}
String extract(String text) {
Matcher m = p.matcher(text);
if (m.find()) {
return m.group(1);
} else {
return "";
}
}
Reguläre Ausdrücke werden je nach Sprache sehr unterschiedlich geschrieben. Seien Sie sich bewusst, dass Sie verletzt werden, wenn Sie denken, dass Sie in einer Sprache gut sind.
~~ Perl ist so einfach! ~~
Recommended Posts