0

一見単純な作業ですが、正規表現の経験はありません。
特定の情報を取得するには、SMS 本文を定義済みのメッセージ テキストで解析する必要があります。
以下に一例を示します。

たなめ!{FirstName} {LastName} isikukoodiga {PersonCode} on sõlminud EMT Reisikindlustuse lepingu numbriga {PolicyNumber}, mis kehtib alates {CoverStartDate} kell {CoverStartTime} kuni {CoverEndDate} kell {CoverEndTime} (Eesti aja järgi). ヒント: {PremiumEur} ユーロ。Tutvu tingimustega ({Terms}) http://emt.ee/kindlustus . Kahjukäsitluse 番号 +3727330700。

中かっこで囲まれたものをすべて解析する必要があります。

Javaで次のようなものを思いつきました:

public static final String REGEX_CONFIRMATION = "Täname! (.*) (.*) isikukoodiga (.*) on sõlminud EMT Reisikindlustuse lepingu numbriga (.*), mis kehtib alates (.*) kell (.*) kuni (.*) kell (.*) \\(Eesti aja järgi\\). Hind: (.*) eurot. Tutvu tingimustega \\((.*)\\) http://emt.ee/kindlustus. Kahjukäsitluse number \\+3727330700.";

ただし、次のグループのみを解析します。

{MARIS}、{PLOTS}、{17204046521}、{22414152}、{01.10.2002}、{13:07}、{02.10.2002}、{23:59}。

ご覧{Terms}の通り欠品です。そして、どこに問題があるのか​​ わかりませんか?

4

5 に答える 5

0

http://www.java2s.com/Code/Java/Regular-Expressions/Findallmatches.htm

次の正規表現と一緒に

\{(.*?)\}
于 2012-10-15T07:09:58.780 に答える
0

このパターンを使ってみませんか?

\{.*?\}
于 2012-10-15T06:57:07.077 に答える
0

単に使用する方が理にかなっているのではないでしょうか

\{[^{}]*\}

あなたの正規表現として?文字列では、次のように記述する必要があります

"\\{[^{}]*\\}"

説明:

\{      # Match an opening brace
[^{}]*  # Match any number of characters except braces
\}      # Match a closing brace
于 2012-10-15T06:57:18.113 に答える
0

私には正しいようです。DOTALL (およびその他の場合は MULTILINE) オプションを使用します。DOTALL は として追加できます"(?s)Täname!..."。次に、".*"改行文字もマップします。

以前の一致が見つかったため、これがそれである可能性があります。

于 2012-10-15T07:20:57.277 に答える
0

{TERMS} 部分に括弧を含めると機能しますか? それ以外の:

String regex = "...Tutvu tingimustega \\((.*)\\) http://emt.ee/kindlustus. ...";

あなたは試すことができます:

String regex = "...Tutvu tingimustega (.*) http://emt.ee/kindlustus. ...";

または、{TERMS} 文字列にあるものに応じて、_ .* _ を _ [^)]* _ に変更できます。この方法では、ブラケットの終わりではないゼロから N 文字を見つけることができます。

于 2012-10-15T07:32:06.913 に答える