1

私のプロジェクトでは、数値、日付、その他の情報マリオンを含む一連の動的文字列を解析する必要があります。正規表現でパーサーを書いてみました。それは働いていますが、いつもではありません。誰かがこれに対するより良い解決策を提案できますか? 以下はサンプル文字列です

「2012-04-16:17:33:03 に ATM で T NAGAR CAP の ATM WDL に Rs. 125.25 で終了する 4444 の HDFC 銀行デビット/ATM カードをご利用いただきありがとうございます。」

ここで私は次のようなデータが欲しい

bank name =hdfc
card no =4444
amount = 125.25
category = atm 
date = 2012-04-16:17:33:03
4

1 に答える 1

2

これを正規表現だけで解決することは、特に文字列の正確な内容が動的である場合、うまく機能しません。必要なのはトークナイザーと、文法を備えた語彙アナライザーです。私は 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
....

これは基本的にルールのツリーを提供します。

入力文字列をトークン化し、文法を適用することで、文字列を分析し、関心のある部分を見つけることができるはずです。

残念ながら、これはこの静かで複雑な非常に興味深いトピックの理論的な紹介に過ぎず、コード例を提供することはできませんが、これが始めるのに役立つことを願っています.

于 2012-08-01T08:16:37.910 に答える