Changing the example from the from the front-page slightly to match "f(o*)obar" match "foobar" with | 'f(?<os>o*)obar' -> os | _ -> "???" will evaluate to "oo", not "o". Similarly, if we use 'f(?<os>.*)bar', then os = "oobar".