Die URL-Zeichenfolge von Hatena Blog hat ein Format wie "Eintrag / Jahr / Monat / Tag / Stunde" (die Beispiel-URL ist ungültig).
https://hogefugapiyo.hatenablog.com/entry/2019/09/02/000000
Dieses Mal werden wir beispielsweise das Jahr, den Monat und den Tag aus dieser URL herausschneiden.
Verwenden Sie java.util.regex.Matcher
.
Matcher matcher = Pattern
.compile(".+/entry/(\\d+)/(\\d+)/(\\d+)/.+")
.matcher(/*Zu vergleichende URL-Zeichenfolge*/);
int year = Integer.parseInt(matcher.replaceFirst("$1"));
int month = Integer.parseInt(matcher.replaceFirst("$2"));
int day = Integer.parseInt(matcher.replaceFirst("$3"));
Obwohl es im Titel als Ausschnitt ausgedrückt wurde, soll dieser Prozess ursprünglich "wenn die Eingabe mit dem regulären Ausdruck übereinstimmt, ersetzen Sie den übereinstimmenden Teil durch den angegebenen regulären Ausdruck". In diesem Fall stimmt die gesamte Zeichenfolge der Vergleichsziel-URL mit dem regulären Ausdruck überein, sodass die gesamte Zeichenfolge durch den angegebenen Inhalt ersetzt wird und daher so aussieht, als wäre sie ausgeschnitten worden.
Was ist "$ 1"? Dies ist der Inhalt, der im regulären Ausdruck in "()" enthalten ist. Innerhalb eines regulären Ausdrucks kann dies wie eine Variable behandelt werden.
Wenn Sie die Essenz ignorieren, ersetzen Sie . + / Eintrag / (\\ d +) / (\\ d +) / (\\ d +) /. +
Durch `. + / Ich denke es ist leicht zu verstehen.
Da es sich um einen Prozess für eine Zeichenfolge handelt, wird das Ergebnis des Ausschneidens natürlich als Zeichenfolge zurückgegeben.
Die gleiche Verarbeitung kann wie folgt durchgeführt werden. Wenn Sie dies jedoch mehrmals tun, ist es effizienter, zuerst das Muster zu kompilieren.
String year = /*Zu vergleichende URL-Zeichenfolge*/.replaceFirst(".+/entry/(\\d+)/(\\d+)/(\\d+)/.+", "$1");
Reguläre Ausdrücke können durch Debuggen auf den folgenden Websites verbessert werden (es gibt jedoch Unterschiede zwischen den Sprachen, daher sollten Sie auch einen Komponententest durchführen).