HATEBIN
>
import std/strscans proc maybe(input: string; start: int; ch: char): int = ord start < input.len and input[start] == ch proc maybe(input: string; start: int; ch: openArray[char]): int = ord(input.len - start >= ch.len and input.toOpenArray(start, start + ch.high) == ch) * ch.len proc matchAllBut(input: string; start: int; ch: char): int = for strCh in input.toOpenArray(start, input.high): if strCh == ch: return 0 input.high proc matchAllBut(input: string; start: int; chs: set[char]): int = for strCh in input.toOpenArray(start, input.high): if strCh in chs: return 0 input.high const url = "https://www.google.com" import std/strutils assert url.scanf("""http$[maybe('s')]://$[maybe("www.")]$[matchAllBut(WhiteSpace)]""")