val p = "ab?".r ~ "b"
p("ab") // failure
The problem is that the regex is only producing a single tree. Need to find a way to work with the regex API to produce a forest, accounting for the fact that regular expressions can have unfixed unions.