プロパティ ファイルに次のエントリがあります。
some.key = \n
[1:Some value] \n
[14:Some other value] \n
[834:Yet another value] \n
正規表現を使用して解析しようとしていますが、グループ化が正しくできないようです。各エントリのキー/値を出力しようとしています。例: Key="834"、Value="さらに別の値"
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
正規表現で正しくグループ化していると思いましたが、そうではないと思います。どんな助けでも大歓迎です!
ありがとう
更新: ブラケットのエスケープが機能しました。パターンを次のように変更しました。フィードバックをお寄せいただきありがとうございます。
private static final String REGEX_PATTERN = "\\[(\\d+)\\:(\\w+(\\w|\\s)*)\\]+";