[Java] Découpez une partie de la chaîne de caractères avec Matcher et des expressions régulières

Choses à faire

La chaîne d'URL de Hatena Blog a un format tel que "entrée / année / mois / jour / heure" (l'exemple d'URL n'est pas valide).

https://hogefugapiyo.hatenablog.com/entry/2019/09/02/000000

Cette fois, à titre d'exemple, nous allons supprimer l'année, le mois et le jour de cette URL.

manière

Utilisez java.util.regex.Matcher.

Matcher matcher = Pattern
    .compile(".+/entry/(\\d+)/(\\d+)/(\\d+)/.+")
    .matcher(/*Chaîne d'URL à comparer*/);

int year = Integer.parseInt(matcher.replaceFirst("$1"));
int month = Integer.parseInt(matcher.replaceFirst("$2"));
int day = Integer.parseInt(matcher.replaceFirst("$3"));

Commentaire

Bien qu'il ait été exprimé sous forme de découpage dans le titre, ce processus vise à l'origine à "si l'entrée correspond à l'expression régulière, remplacer la partie correspondante par l'expression régulière spécifiée". Dans ce cas, toute la chaîne de caractères de l'URL cible de la comparaison correspond à l'expression régulière, de sorte que la chaîne de caractères entière est remplacée par le contenu spécifié et, par conséquent, il semble qu'elle a été coupée.

Qu'est-ce que "$ 1"? C'est le contenu entre "()" dans l'expression régulière. Dans une expression régulière, cela peut être traité comme une variable.

Si vous ignorez l'essence, remplacez . + / Entry / (\\ d +) / (\\ d +) / (\\ d +) /. + Avec . + / Entry / $ 1 / $ 2 / $ 3 /. + Je pense que c'est facile à comprendre.

Puisqu'il s'agit d'un processus pour une chaîne de caractères, le résultat de la découpe sera naturellement renvoyé sous forme de chaîne de caractères.

Une autre solution

Le même traitement peut être effectué en écrivant comme suit, mais si vous le faites plusieurs fois, il est plus efficace de compiler`` Pattern en premier.

String year = /*Chaîne d'URL à comparer*/.replaceFirst(".+/entry/(\\d+)/(\\d+)/(\\d+)/.+", "$1");

prime

Vous pouvez améliorer l'expression régulière en la déboguant sur le site suivant (cependant, il existe des différences entre les langues, vous devez donc également faire un test unitaire).

Recommended Posts

[Java] Découpez une partie de la chaîne de caractères avec Matcher et des expressions régulières
[Java] Comment utiliser une sous-chaîne pour découper une partie d'une chaîne de caractères
[Java] La partie déroutante de String et StringBuilder
<java> Fractionner l'adresse avant et après l'adresse avec une expression régulière
[Java] Comment découper une chaîne de caractères caractère par caractère
<Java> Quiz pour convertir par lots les noms de fichiers séparés par une chaîne de caractères spécifique avec une partie du nom de fichier
Chaîne Remplacement des cas où un saut de ligne est inclus dans * dans l'expression régulière de la condition de recherche
Remplacer par une valeur selon la correspondance avec une expression régulière Java
Extraire une partie d'une chaîne en Ruby
[Ruby] Découpez une chaîne de caractères à l'aide de la méthode slice
[Java] Gestion des chaînes de caractères (classe String et classe StringBuilder)
Remplacez seulement une partie de l'hôte URL par java
Extraire des éléments en remplaçant une expression régulière d'une grande quantité de HTML avec java
[Java] Lors de la mise d'une chaîne de caractères dans le cas de l'instruction switch, il est nécessaire d'en faire une expression constante
Découpez une chaîne de rubis
Mémorandum n ° 4 "Obtenez une chaîne de caractères et décorez-la" [Java]
[Java] Méthode de comparaison de chaînes de caractères et méthode de comparaison utilisant des expressions régulières
Réglez la date et l'heure à partir de la chaîne de caractères avec POI
Le nième et le n + 1er caractères d'une chaîne Ruby
L'histoire de la création d'une version Java du serveur Minecraft avec GCP (et également de la création d'une liste blanche)
Une petite histoire d'expression régulière Partie 1
Lisez le fichier sous le chemin de classe sous forme de chaîne de caractères avec ressort
Connexion à une base de données avec Java (partie 1) Peut-être la méthode de base
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
Une petite histoire d'expressions régulières Partie 2
J'ai essayé de résumer les méthodes de Java String et StringBuilder
Représentez graphiquement les informations du capteur de Raspberry Pi en Java et vérifiez-les avec un navigateur Web
Je veux extraire entre des chaînes de caractères avec une expression régulière
Générez un numéro de série avec TableGenerator of Hibernate (JPA) et stockez-le dans l'ID de String.
Une collection de phrases qui impressionne le "sentiment différent" de Java et de JavaScript
L'histoire de la création d'un lanceur de jeu avec une fonction de chargement automatique [Java]
Appelle la chaîne de caractères passée comme argument en tant que méthode avec send
Exprimons le résultat de l'analyse du code d'octet Java dans un diagramme de classes
[Java] Créez un fichier jar compressé et non compressé avec la commande jar
Comment savoir quelle version Java d'un fichier de classe a été compilée
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
[Java] Vérifiez si la chaîne de caractères est composée uniquement de blancs (= Vierge)
[Java] Divise une chaîne de caractères par un caractère spécifié
Nommer un groupe d'expressions régulières (Java)
Diviser une chaîne avec ". (Dot)" en Java
[Rubiy] Je veux créer un tableau à partir d'une chaîne de caractères avec la méthode split. Et vice versa.
[Java] Différence entre equals et == dans une chaîne de caractères qui est un type de référence
[Java] Comment obtenir facilement la plus longue chaîne de caractères d'ArrayList à l'aide de stream
Lisez le fichier sous le chemin de classe sous forme de chaîne de caractères avec ressort
Valider le jeton d'ID d'un utilisateur authentifié par AWS Cognito en Java
L'histoire de la comparaison de chaînes de bas niveau en Java
Lire une chaîne dans un fichier PDF avec Java
[Supprimer la première lettre de la chaîne de caractères] Ruby
Sortez avec un suffixe sur la méthode
Mesurer la taille d'un dossier avec Java
[Java] Obtenir la longueur de la chaîne de paire de substitution
[Note] Java: mesure la vitesse de concaténation de chaînes
J'ai comparé les caractéristiques de Java et .NET
JSON avec Java et Jackson Part 2 XSS mesures
Calculer le score de similarité des chaînes de caractères avec JAVA
Préparer un environnement de scraping avec Docker et Java
Je veux trouver la somme de contrôle MD5 d'un fichier en Java et obtenir le résultat sous forme de chaîne de caractères en notation hexadécimale.