Écrivez ABNF en Java et transmettez l'adresse e-mail

On dit qu'il est difficile d'analyser les adresses e-mail dans le programme, j'ai donc implémenté l'ABNF complet. En raison de l'emballage de diverses choses, vous pouvez facilement implémenter JSON, JSON Pointer et JSON Patch.

ABNF est souvent utilisé dans les RFC IETF. E-mail et JSON sont célèbres, et même comment écrire une adresse IP et une URL est ABNF. Pour cette raison, je n'ai vu que d'innombrables outils et bibliothèques généraux sur le marché, donc je l'ai fait rapidement.

La structure n'est qu'une extension de Parser pour créer quelque chose comme un oiseau, puis le convertir du texte en objet. ABNF lui-même est également écrit en ABNF, mais comme c'est la première fois, il est créé uniquement par le constructeur. Si vous spécifiez le format de JSON etc., vous pouvez créer un analyseur, donc si vous incorporez une partie de type générateur qui assemble les parties de sortie, elle sera terminée.

Une partie de RFC ABNF est résumée dans SoftLibRFC, je vais donc vous présenter comment l'utiliser. Tout ce dont vous avez besoin est SoftLibRFC, SoftLibABNF et SoftLib. SoftLib JSON n'est pas utilisé. Actuellement, seul le code source est disponible, essayez donc de l'utiliser de manière appropriée.

La classe net.siisise.abnf.rfc.IMF5322 est l'ABNF du courrier RFC, et la RFC 5322 est presque la même. IMF5322.angleAddr est juste pour définir uniquement les adresses e-mail. Puisque la définition est stockée dans une variable appelée REG, si elle n'est pas rendue publique, elle peut être extraite de là ou rendue publique.

boolean b = IMF5322.REG.ref("angle-addr").eq(adresse mail);

Je me demande si cela peut être jugé booléen. L'ABNF individuel est une classe ABNF. Il existe des méthodes telles que boolean eq (String) exact match et boolean is (String) first match, alors essayez-le. Si vous le combinez avec une classe appelée Packet, vous pouvez faire diverses choses, mais cette fois, il est omis. ABNF peut être multiplié et agrandi.

A utiliser tous ensemble

Vous pouvez nommer et enregistrer ABNFReg, et vous pouvez également vous y référer dans la définition. .rule (nom, ABNF) et .rule (nom, règle) .rule (règle) sont tous enregistrés ABNF. .ref (String) et .href (String) apportent l'ABNF enregistré par nom. Étant donné que la relation de l'ordre d'enregistrement peut changer, il y a une différence entre la récupération des éléments non enregistrés ou non. Il est également possible d'enregistrer plusieurs définitions à la fois avec .rulelist (String). Une pause peut être nécessaire.

Il est étrange que JSON soit intégré à mesure qu'il se développe.

SoftLibRFC https://github.com/okomeki/SoftLibRFC SoftLibABNF https://github.com/okomeki/SoftLibABNF SoftLib https://github.com/okomeki/SoftLib RFC 5234 ABNF https://tools.ietf.org/html/rfc5234 RFC 8259 JSON https://tools.ietf.org/html/rfc8259

Recommended Posts

Écrivez ABNF en Java et transmettez l'adresse e-mail
Écrivez ABNF en Java et transmettez l'adresse e-mail
Concernant les modificateurs transitoires et la sérialisation en Java
Ecrire une classe en Kotlin et l'appeler en Java
Classes et instances Java comprises dans la figure
Ecrire des rappels de vol en Java
Implémenter l'envoi d'e-mails en Java
Écrire du code de type Java8 en Java8
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
JSON en Java et Jackson Partie 1 Renvoyer JSON à partir du serveur
Corrigez le code de caractère en Java et lisez à partir de l'URL
Définir des méthodes abstraites dans l'énumération Java et écrire leur comportement
Pensez aux différences entre les fonctions et les méthodes (en Java)
Comment écrire des commentaires dans le fichier de définition de schéma dans GraphQL Java et les refléter dans GraphiQL et GraphQL Playground
Accéder à l'interface réseau avec Java
J'ai envoyé un e-mail en Java
Devinez le code de caractère en Java
Passer les paramètres régionaux i18n à JavaScript
[Java] Obtenez les dates des derniers lundi et dimanche dans l'ordre
Exemple d'encodage et de décodage en Java
Spécifiez l'emplacement Java dans eclipse.ini
Décompressez le fichier zip en Java
Classe StringBuffer et StringBuilder en Java
Ecrire des clés et des valeurs dans Ruby
Java passe par valeur et passe par référence
Analyser l'analyse syntaxique de l'API COTOHA en Java
Comprendre equals et hashCode en Java
Bonjour tout le monde en Java et Gradle
Appelez la super méthode en Java
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java [décoction n ° 2]
Structure de l'application Web par Java et flux de traitement dans la couche de présentation
Spécifiez l'ordre dans lequel les fichiers de configuration et les classes sont chargés dans Java
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
Une note sur les différences entre les interfaces et les classes abstraites en Java
[Java] Rédiger un quiz de programmation SET INTERSECTION avec StreamAPI en une seule ligne
Ceci et cela de la mise en œuvre du jugement en temps réel des dates en Java
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Trouvez le maximum et le minimum des cinq nombres saisis en Java
<java> Fractionner l'adresse avant et après l'adresse avec une expression régulière
Vérifiez l'enregistrement MX de l'adresse e-mail avec java et vérifiez le domaine
Comprendre la différence entre int et Integer et BigInteger en java et float et double
Comment créer votre propre annotation en Java et obtenir la valeur
Obtenez le résultat de POST en Java
Différence entre final et immuable en Java
Référence Java à comprendre dans la figure
Essayez d'utiliser l'API Stream en Java
Appelez l'API de notification Windows en Java
Java SE8 Silver ~ La route à franchir ~
J'ai essayé le nouveau yuan à Java
[Java] Utiliser la technologie cryptographique avec les bibliothèques standard
Organisation des notes dans la tête (Java-Arrangement)
[Java] Comment sortir et écrire des fichiers!
Essayez d'appeler le service CORBA sur Java 11+
Vérifiez le caractère unique de votre adresse e-mail
Quelle est la méthode principale en Java?
Comment obtenir la date avec Java
[Java 7] Divisez la liste Java et exécutez le processus
Différence entre les listes d'arry et les listes liées en Java
Programmer les en-têtes et pieds de page PDF en Java