嘿傢伙們,我想用Java的useDelimiter
方法對它的Scanner
類做一些簡單的解析。基本上每行是由限定的記錄「|」,因此,例如:正則表達式匹配「|」
2 | John Doe
3 | Jane Doe
4 | Jackie Chan
的方法作爲一個參數,其用於以匹配正則表達式。有人能請我提供與|
匹配的正則表達式(兩邊用一個空格分隔的垂直條)。
謝謝,我真的很感激它!
嘿傢伙們,我想用Java的useDelimiter
方法對它的Scanner
類做一些簡單的解析。基本上每行是由限定的記錄「|」,因此,例如:正則表達式匹配「|」
2 | John Doe
3 | Jane Doe
4 | Jackie Chan
的方法作爲一個參數,其用於以匹配正則表達式。有人能請我提供與|
匹配的正則表達式(兩邊用一個空格分隔的垂直條)。
謝謝,我真的很感激它!
我想出了\s\|\s
這在Java中將表示爲"\\s\\|\\s"
。我不知道這是否是最好的。我不需要任何硬核,只是有用的東西,而這似乎:)
對不起回答我自己的問題,我猜想輸入後,它幫助我思考。
只要小心,'\ s'將是任何空格字符,包括'\ t'!所以你可能想要更具體一些,取決於你的輸入設置。 – 2010-03-04 00:55:08
我同意 - 我會用'「\\ |」'作爲我的參數使用Delimiter – 2010-03-04 00:57:34
Ohhh好的,謝謝!我不知道它可能是那麼容易:) – 2010-03-04 00:59:06
" \| "
會工作,你需要轉義引號和|
不要忘了包括*匹配重複字符
\S*\s*\|\s*[\S\t ]*
編輯 - 您可以使用簡單,就是太.*\|.*
你的第二個正則表達式,'。* \ |。*',會在返回的字符串上留下空格... – 2010-03-04 09:05:05
......
^[ \| ]?$
這裏是一個解析字符串的代碼片段(或整個File,Scanner都可以接受),並從每行中提取數字和名稱:
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
很酷! split()具有正則表達式的參數,因此您需要使用\ |代表酒吧,在一個字符串中是「\\ |」。 – jgmao 2013-08-07 04:07:18
的Java必須有某種形式的字符串分割功能。你可以使用它。 – 2010-03-04 00:52:46
是的,這實際上是我最終做的,但我仍然使用正則表達式來分割線字符串:) – 2010-03-04 01:13:20