我已經在性能以下項文件:Java的正則表達式分組
some.key = \n
[1:Some value] \n
[14:Some other value] \n
[834:Yet another value] \n
我想使用正則表達式解析它,但我似乎無法得到正確的分組。我正在嘗試爲每個條目輸出一個鍵/值。例如:鍵=「834」,值=「另一個價值」
private static final String REGEX_PATTERN = "[(\\d+)\\:(\\w+(\\s)*)]+";
private void foo(String propValue){
final Pattern p = Pattern.compile(REGEX_PATTERN);
final Matcher m = p.matcher(propValue);
while (m.find()) {
final String key = m.group(0).trim();
final String value = m.group(1).trim();
System.out.println(String.format("Key[%s] Value[%s]", key, value));
}
}
我得到的錯誤是:
Exception: java.lang.IndexOutOfBoundsException: No group 1
我以爲我是正確分組的正則表達式,但我想不會。任何幫助,將不勝感激!
感謝
UPDATE: 逃離括號工作。將模式更改爲以下感謝您的反饋!
private static final String REGEX_PATTERN = "\\[(\\d+)\\:(\\w+(\\w|\\s)*)\\]+";
索引超出界限:檢查數組中不存在的元素。大概指向一個未設置的索引 – Alfabravo
Alfabravo - 是的,我知道,但我很好奇爲什麼正則表達式不正確 – user973479