10

クラスでJavaのuseDelimiterメソッドを使用Scannerして、簡単な解析をしようとしています。基本的に、各行は「 | 」で区切られたレコードです。たとえば、次のようになります。

2 | John Doe
3 | Jane Doe
4 | Jackie Chan

このメソッドは、一致する正規表現をパラメーターとして受け取ります。誰かが一致する正規表現を教えてください|(両側に 1 つのスペースで区切られた垂直バー)。

ありがとう、本当に感謝します!

4

5 に答える 5

14

\s\|\s私は Java で と表現されるものを思いつきました"\\s\\|\\s"。これがベストかどうかはわかりませんが。筋金入りのものは必要ありません。機能するものだけです。これは次のようです:)

自分の質問に答えてすみません。入力した後、考えるのに役立ちました。

于 2010-03-04T00:52:06.127 に答える
4

文字列 (またはファイル全体、スキャナーは両方を受け入れます) を解析し、各行から番号と名前を抽出するコード スニペットを次に示します。

String s = 
    "1 | Mr John Doe\n" + 
    "2 | Ms Jane Doe\n" + 
    "3 | Jackie Chan\n";

Pattern pattern = Pattern.compile("(\\d+) \\| ((\\w|\\s)+)");
Scanner scan = new Scanner(s);
while (scan.findInLine(pattern) != null) {
    MatchResult match = scan.match();

    // Do whatever appropriate with the results
    System.out.printf("N° %d is %s %n", Integer.valueOf(match.group(1)), match.group(2));

    if (scan.hasNextLine()) {
        scan.nextLine();
    }
}

このコード スニペットは、次の結果を生成します。

N° 1 is Mr John Doe
N° 2 is Ms Jane Doe
N° 3 is Jackie Chan
于 2010-03-04T01:06:49.340 に答える
2
" \| " 

動作する場合は、引用符と | をエスケープする必要があります

于 2010-03-04T00:52:09.193 に答える
0

.....。

^[ \| ]?$
于 2010-03-04T01:02:09.687 に答える
0

繰り返し文字に一致させるために * を含めることを忘れないでください

\S*\s*\|\s*[\S\t ]*

編集済み - これも簡単に使用できます.*\|.*

于 2010-03-04T00:59:13.483 に答える