チャールズ・モリン:
私は、この文字列を分割しようとしています:
ABA(2)BB(52)GC(4)D(2)のFe(14)F(6)G(8)H(4)5(6)
それは、この配列のようになります。
[B(2)、B、B(52)、G、C(4)、D(2)、F、E(14)、F(6)、G(8)]
ここではルールがあり、それが文字受け入れることができますグラムにし、それだけでは文字ですが、それを次のように括弧がある場合、それは彼らとその内容を含まなければなりません。括弧の内容は数値でなければなりません。
これは私が試したものです:
content = "aba(2)bb(52)gc(4)d(2)fe(14)f(6)g(8)h(4)5(6)";
a = content.split("[a-g]|[a-g]\\([0-9]*\\)");
for (String s:
a) {
System.out.println(s);
}
そして、ここでの出力です
(2)
(52)
(4)(2)
(14)(6)(8)H(4)5(6)
ありがとうございました。
Wiktor第Stribiżav:
これらの部分文字列に一致するように簡単です:
String content = "aba(2)bb(52)gc(4)d(2)fe(14)f(6)g(8)h(4)5(6)";
Pattern pattern = Pattern.compile("[a-g](?:\\(\\d+\\))?");
List<String> res = new ArrayList<>();
Matcher matcher = pattern.matcher(content);
while (matcher.find()){
res.add(matcher.group(0));
}
System.out.println(res);
出力:
[a, b, a(2), b, b(52), g, c(4), d(2), f, e(14), f(6), g(8)]
パターンの詳細
[a-g]
-からの手紙a
にg
(?:\(\d+\))?
- 任意の非捕捉グループマッチングの1または0の出現\(
-(
文字\d+
- 1+桁\)
-)
文字。