正規表現を使用してJavaでのスプリット文字列配列

チャールズ・モリン:

私は、この文字列を分割しようとしています:

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)]

参照してください。Javaのデモ正規表現のデモを

パターンの詳細

  • [a-g]-からの手紙ag
  • (?:\(\d+\))? - 任意の非捕捉グループマッチングの1または0の出現
    • \(- (文字
    • \d+ - 1+桁
    • \)- )文字。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=191702&siteId=1