Crates.io | tikh_email_parser |
lib.rs | tikh_email_parser |
version | 0.1.0 |
source | src |
created_at | 2024-11-06 22:20:40.373714 |
updated_at | 2024-11-06 22:20:40.373714 |
description | Simple parser of email addresses. |
homepage | |
repository | https://github.com/your-username/tikh_email_parser |
max_upload_size | |
id | 1439184 |
size | 26,364 |
Розширений парсер електронних адрес з підтримкою коментарів та спеціальних символів за допомогою pest. Цей парсер розбирає складні електронні адреси та витягує локальну частину і домен.
Парсер використовує pest для розбору електронних адрес на основі розширеної граматики. Він підтримує формати електронних адрес з коментарями, спеціальними символами та може перевіряти і витягувати компоненти з електронних адрес.
Парсер аналізує рядок електронної адреси, розбиваючи його на локальну частину та домен за допомогою символу @
. Локальна частина та домен можуть містити спеціальні символи та коментарі. Парсер використовує розширену граматику, яка підтримує:
(
та )
, який може з'являтися в різних місцях адреси." "
, щоб дозволити спеціальні символи.! # $ % & ' * + - / = ? ^ _ { | } ~
.Процес парсингу виконується наступним чином:
Щоб використовувати парсер, запустіть CLI-додаток і надайте файл, що містить електронні адреси для розбору.
cargo run -- parse emails.txt
Щоб відобразити інформацію про автора:
cargo run -- credits
Парсер використовує наступну граматику:
makefile Copy code email = { cfws? ~ local_part ~ "@" ~ domain ~ cfws? } local_part = { dot_atom | quoted_string } domain = { dot_atom } dot_atom = { dot_atom_text ~ ("." ~ dot_atom_text)* } dot_atom_text = { [a-zA-Z0-9!#$%&'+/=?^_`{|}~-]+ } quoted_string = { """ ~ qcontent ~ """ } qcontent = { qtext | quoted_pair } qtext = { !["\] ~ ANY } quoted_pair = { "\" ~ ANY } cfws = { (comment | FWS)+ } comment = { "(" ~ (ctext | quoted_pair | comment)* ~ ")" } ctext = { ![()\] ~ ANY } FWS = { (WSP* ~ CRLF)? ~ WSP+ } WSP = _{ " " | "\t" } CRLF = _{ "\r\n" | "\n" }