所以我有一个很长的输入字符串,我使用单个正则表达式提取了几位数据。输入是由客户端提供的,他们经常忘记重要的部分,这些部分不仅是正则表达式匹配所必需的(它们是),而且它们是这个正则表达式构建的数据库的组成部分。
我希望能够指出输入中匹配开始失败的位置以及原因(向他们展示正则表达式接下来的期望)。
性能是个问题。正则表达式包含多个字段,因此将其分解为几个单独的正则表达式匹配可能会令人望而却步。
这是真实事物的缩减版:
^(?:(?P<doors>\d) Doors).*(?P<transmission>Automatic|Manual)
以及一些示例输入(和所需的输出):
"3 Doors blah blah blah Manual" # match!
"Guadeloupe blah blah blah Sneezes" # Reply: Missing doors
"2 Doors blah blah blah Psychic" # Reply: Missing transmission