これを正規表現だけで解決することは、特に文字列の正確な内容が動的である場合、うまく機能しません。必要なのはトークナイザーと、文法を備えた語彙アナライザーです。私は Java でこのようなことをしたことはありませんが、まず、文字列をトークン (キーワード、値、式、フレーズなど) に分解する必要があります。
「2012-04-16:17:33:03 に ATM で T NAGAR CAP の ATM WDL に Rs. 125.25 で終了する 4444 の HDFC 銀行デビット/ATM カードをご利用いただきありがとうございます。」
phrase[Thank you for using your]
stringconst[HDFC Bank]
phrase[ending]
numericconst[4444]
keyword[for]
stringconst[Rs.]
numericconst[125.25]
....
これを行うには、トークンを定義し、それらにわかりやすい名前を付け、正規表現を使用してそれらのルールを定義します。焦点は、それが何を意味するかではなく、あなたが持っているものです.
sentence ::= intro bankinfo cardinfo valueinfo categoryinfo timeinfo
intro ::= phrase
bankinfo ::= bankname phrase | phrase bankname
bankname ::= stringconst
....
これは基本的にルールのツリーを提供します。
入力文字列をトークン化し、文法を適用することで、文字列を分析し、関心のある部分を見つけることができるはずです。
残念ながら、これはこの静かで複雑な非常に興味深いトピックの理論的な紹介に過ぎず、コード例を提供することはできませんが、これが始めるのに役立つことを願っています.