レシートから各項目のデータを取得するために正規表現を使用しています。領収書は次のようになります。
Qty Desc
1 JD *#
MARTINI *#
2 XXXXXX
3 YYYYYY
4 JD
PEPSI *#
すべてのアイテムに数量と説明があり、一部のアイテムには余分な*#
. また、説明にはスペースを含めることができ、複数の行を含めることもできます。各行には独自の *#
. 数量と説明をキャッチしたいのですが(複数行の場合はすべての行を取得します)、余分なものはまったく気にしません*#
。したがって、この例では、最初の項目で Quantity=1 と Description="JD MARTINI" をキャッチします。4 番目の場合、Quantity=4 および Description="JD PEPSI" です。
私の現在の正規表現は次のようになります。
((\d+)\s+(.*)(\s+\*#)?)
それは機能していません。最後の括弧をオプションにすることで、貪欲な人(.*)
がすべてを完全にキャッチできるようになるためだと思います。最後の括弧が省略可能でない場合、正規表現は extra を含む項目に対して機能しますが*#
、1 番目と 3 番目の項目には一致しません (extra がないため*#
)。
何か案は?