2011-11-25 17 views
0

RegExを使用してテキストを解析しますか?私はこのようになりますテキストから値を解析する必要があり

Description. Question? 
A. First Answer 
B. Second Answer 
C. Third Answer 

Answer: A, B 

は、今私が説明、質問、回答及びその回答が正しいかを確認する必要があります。それはRegExで可能ですか?私はそれが可能でなければならないことを知っていますが、私はRegEx Expertではありません。

答えて

3

真剣にRegexは素晴らしいですが、一度解析ロジックが高度化すると、問題を解決するために正規表現も必要になります。私はロジックを小さな断片に分割することをお勧めします(いくつかの前処理を行うためのスクリプト言語を用意していますか?)

キラー正規表現とマッチしたとしてもあなたや他のごめんなさい人)は痛みになるでしょう。

私はこれ(あなたがコンマを除去する必要があるだろう)のようなものとの答え一致します

^Answer: (\w,?)+ 

をそして私は、最初の正規表現で見つかった答えとテキストを再解析するためのロジックにしてくださいヘックずっと簡単

^A\.\s(.*) 

で友達に点滅するものではないかもしれませんが、維持することが容易になり、:、このような何かをして(この場合には、試合の再構築Aは答えました)理解する。

+0

"^ A \。\ s(。*)"はうまく動作します!しかし、私には問題があります。私は改行のあるAnswersを持っています。どのように私は次の答えにマッチせずに答え全体を一致させることができますか? –

+0

ああ、 "^ A \。\ s([^ B] *)"は仕事をします! –

+0

ああ、いや、そうではない... –

0

正規表現では、テキストの解析で可能性のあることは可能ですが、時間をかけて学習する必要があります。あなたの特定の仕事がどれほど手に負えないかは、テキスト本体の一貫性にかかっています。つまり、要するに、Reg Exを求めないでください!がんばろう。

+0

"勉強に少し時間を投資する"、唯一の問題は、私は時間がありません;) –

0

実際の質問と説明をより具体的に示すことができれば、わかりやすくなりますが、私がこの権利を読んでいれば、最後の完全停止までのすべてのテキストを見つけることができます」 "疑問符 "?"の前に、疑問符 "?"までの文字列を見つけ、最後に完全な停止文字を使用します。右それらの後なので、この擬似のような何か:

lastFullStopBeforeQ = text.substring(最初の質問に0 マーク).lastIndexOf( "")

説明=(lastFullStopBeforeQへ0)text.substring

質問= text.substring(最初の質問にlastFullStopBeforeQ + 1 マーク)

回答[0] = text.substring(最初の疑問符+ 1次の "\ n")...

CorrectAnswers [0] = text.substring(の次のインデックス "回答:" 次の に "")...

私はあなたが何か他のものを使用するならば、私ができる、これはC#を使用可能である知っていますあなたにはっきりとした答えはありません。

関連する問題