Anonymous
7/12/2025, 6:52:51 PM
No.105882973
>regex is unreadable
raku solved this problem
grammar URL
{
regex TOP { <SchemeW> <Hostinfo>? <Path>? <QueryW>? <FragmentW>? }
regex SchemeW { <Scheme> <SchemeS> }
regex SchemeS { ':' }
regex Scheme { <[a..z]><[a..z 0..9 + . : \-]>* }
regex Hostinfo { '//' <UserinfoW>? <Host> <PortW>? }
regex UserinfoW { <Userinfo> <UserinfoS> }
regex Userinfo { .*[\:.+]? }
regex UserinfoS { '@' }
regex Host { <[\w \. \-]>* }
regex PortW { <PortS> <Port> }
regex PortS { ':' }
regex Port { \d+ }
regex Path { '/'? <[\w \d -] - [#?]>+ }
regex QueryW { <QueryS> <Query> }
regex QueryS { '?' }
regex Query { <[\w \d \- =]>* }
regex FragmentW { <FragmentS> <Fragment> }
regex FragmentS { '#' }
regex Fragment { .+ }
}
raku solved this problem
grammar URL
{
regex TOP { <SchemeW> <Hostinfo>? <Path>? <QueryW>? <FragmentW>? }
regex SchemeW { <Scheme> <SchemeS> }
regex SchemeS { ':' }
regex Scheme { <[a..z]><[a..z 0..9 + . : \-]>* }
regex Hostinfo { '//' <UserinfoW>? <Host> <PortW>? }
regex UserinfoW { <Userinfo> <UserinfoS> }
regex Userinfo { .*[\:.+]? }
regex UserinfoS { '@' }
regex Host { <[\w \. \-]>* }
regex PortW { <PortS> <Port> }
regex PortS { ':' }
regex Port { \d+ }
regex Path { '/'? <[\w \d -] - [#?]>+ }
regex QueryW { <QueryS> <Query> }
regex QueryS { '?' }
regex Query { <[\w \d \- =]>* }
regex FragmentW { <FragmentS> <Fragment> }
regex FragmentS { '#' }
regex Fragment { .+ }
}