文字列が整数のセットの形式になっていることを確認する正規表現を書き込もうとしています
ex: {1, 23, -501, 52, 2387329, 0}
これまでのところ私は持っています:
Pattern p = [({(([0-9]+,)*[0-9]+)})]
しかし、それは機能していないようです...誰かが私を助けることができますか?
ありがとう!
Pattern.compile("\\{\\s*(?:\\d+(?:\\s*,\\s*\\d+\\s*)*)?\\}")
ゼロ個以上のコンマ区切りの非負の10進整数を囲む中括弧に一致します。
\\s
任意のスペース文字に一致します。はグループ化のためだけの(?:...)
ものであり、中括弧の間のものは事実上(10進数の後に(任意の数のコンマ、次に10進数))オプションです。
使用している表記がわかりません
[({(([0-9]+,)*[0-9]+)})]
ただし、空のセットとは完全に一致せず、コンマの後のスペースとは一致しません。
この正規表現を試してください
"\\{((-?\\d+), ?)*-?\\d+}"
これを試してみてください。
String data = "{1, 23, -501, 52, 2387329, 0}";
Pattern pattern = Pattern.compile("\\{(\\s?-?\\d+?\\,?\\s?)+?\\}");
Matcher matcher = pattern.matcher(data);
while (matcher.find()) {
// Indicates match is found. Do further processing
System.out.println(matcher.group());
}