0

特定のテキストからペア (param : value) を一致させるために、Java で正規表現を記述しようとしています。

"お客様

Customer Name               :  JOHN DOE

City                  :  Chicago

Customer Id               :  123AWE32D2

System Id             :  004349

Register Date (yymmddww)      :  12020906 

"

出力として、ペアが必要です:

顧客名、JOHN DOE 市、シカゴ 顧客 ID、123AWE32D2 システム ID、004349 登録日 (yymmddww)、12020906

さまざまな数のパラメーターが存在する可能性があります。グループ (パラメーター名) : (値) を抽出するための普遍的なパターンが必要です。これが私のパターンです。特定のパラメーターを一致させるために書きました:

\s*Customer Name\s*:\s*([^\n]*\S)

4

3 に答える 3

2

1) これ(.+):(.+)を複数行モードで使用します。

意味:

.- なんでも

:- 次に、コロンが必要です

.- また何でも

+- 少なくとも 1 文字

コロンの前と後に、2 つのグループがあります。

2)または単にsplit()メソッドを使用する -split(":")

両方の後、trim()スペースを削除するか、正規表現でスペースを削除するために使用します。

于 2013-08-29T09:46:25.340 に答える
0

(?m)^/$ を改行の前後に一致させる「複数行」スイッチを使用します。

(?m)^\\s*(.+?)\\s*:\\s*(.+?)\\s*$

一致ごとに、グループ 1 のパラメータ名とグループ 2 の値がキャプチャされます。

于 2013-08-29T09:47:18.677 に答える
0

これを試すことができます

Matcher m = Pattern.compile("(?s)\\b(.+?):(.*?)\\b(.+?)\\n").matcher(your text);
while (m.find())
    System.out.print(m.group(1).trim() + "," + m.group(3).trim() + " ");
于 2013-08-29T10:14:00.163 に答える