我有一個這樣的字符串:如何逃避java正則表達式中的brakets?
[1359873374000,281197568],[1360044062000,1206052864],[1360068648000,991623168]
我怎樣才能像提取與[1359873374000,281197568]
正則表達式的每個項目?
我寫了這個代碼,但它不工作:
String[] parts = mainstr.split("\\[[0-9],[0-9]\\]");
我有一個這樣的字符串:如何逃避java正則表達式中的brakets?
[1359873374000,281197568],[1360044062000,1206052864],[1360068648000,991623168]
我怎樣才能像提取與[1359873374000,281197568]
正則表達式的每個項目?
我寫了這個代碼,但它不工作:
String[] parts = mainstr.split("\\[[0-9],[0-9]\\]");
您正則表達式匹配[1,2]
。你必須增加一個乘數:
"\\[[0-9]+,[0-9]+\\]"
編輯: 我不認爲split()
會做你想要什麼。看看Matcher Class。
解決方案與匹配器類:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
String sourceString = "[1359873374000,281197568],[1360044062000,1206052864],[1360068648000,991623168]";
Pattern pattern = Pattern.compile("\\[[0-9]+,[0-9]+\\]");
Matcher matcher = pattern.matcher(sourceString);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
這會給你的數字對每一次出現。如果你想單獨使用數字,你可以像這樣捕獲它們:"\\[([0-9]+),([0-9]+)\\]"
。你將不得不擴展這個例子。
你可能想拆就「],[」,而不是要搜索的整個格局。試試這個:
String[] parts = mainstr.split("\\\\],\\\\["); // Never sure when to use double or quadruple slashes.
之後,您可能需要替換括號。
會吃''''''''' – Anirudha
[0-9]
恰好匹配一個數字。如果您想匹配數字序列,請使用[0-9]*
。如果您想匹配非空的數字序列,請使用[0-9]+
。在你的情況下,你可能需要做"\\[[0-9]+,[0-9]+\\]"
,或者,這是相同的,"\\[\\d+,\\d+\\]"
,因爲\d
在Java正則表達式中表示「數字」。
這是不完美的,因爲它失去了一些支架的,但至少數字是完整和正確歸類:
String[] parts = mainstr.split("\\D,\\D");
你試圖解析JSON?有Java庫可以做到這一點。 –