クラスでJavaのuseDelimiter
メソッドを使用Scanner
して、簡単な解析をしようとしています。基本的に、各行は「 | 」で区切られたレコードです。たとえば、次のようになります。
2 | John Doe
3 | Jane Doe
4 | Jackie Chan
このメソッドは、一致する正規表現をパラメーターとして受け取ります。誰かが一致する正規表現を教えてください|
(両側に 1 つのスペースで区切られた垂直バー)。
ありがとう、本当に感謝します!
クラスでJavaのuseDelimiter
メソッドを使用Scanner
して、簡単な解析をしようとしています。基本的に、各行は「 | 」で区切られたレコードです。たとえば、次のようになります。
2 | John Doe
3 | Jane Doe
4 | Jackie Chan
このメソッドは、一致する正規表現をパラメーターとして受け取ります。誰かが一致する正規表現を教えてください|
(両側に 1 つのスペースで区切られた垂直バー)。
ありがとう、本当に感謝します!
\s\|\s
私は Java で と表現されるものを思いつきました"\\s\\|\\s"
。これがベストかどうかはわかりませんが。筋金入りのものは必要ありません。機能するものだけです。これは次のようです:)
自分の質問に答えてすみません。入力した後、考えるのに役立ちました。
文字列 (またはファイル全体、スキャナーは両方を受け入れます) を解析し、各行から番号と名前を抽出するコード スニペットを次に示します。
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
" \| "
動作する場合は、引用符と | をエスケープする必要があります
.....。
^[ \| ]?$
繰り返し文字に一致させるために * を含めることを忘れないでください
\S*\s*\|\s*[\S\t ]*
編集済み - これも簡単に使用できます.*\|.*