2

特定の場合にのみ、文字列を「-」で分割する方法を見つけたいです。

前の文字が文字 (小文字または大文字) で、文字列の最初の文字でない場合は分割したいと思います。また、次の文字は数字 [0-9] でなければなりません。文字列にスペースはありません。

-11 => List(-11)
v-11 => List(v,11)
v- => List(v-)
-2-11 => List(-2-11)
v-11- => List(v,11-)
-v-11- => List(-v,11-)

String.split(regex) ではうまくできませんでした。私が見つけた唯一の解決策は、文字列全体を解析して各文字を探すことでした。そのための正規表現はありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

10

この正規表現で文字列を分割してみてください:

"(?<=[A-Za-z])-(?=\\d+)"

テスト クラスを追加します。

@Test
public void atest() {
    String re = "(?<=[A-Za-z])-(?=\\d+)";
    String[] ss = new String[] { "-11", "v-11", "v-", "-2-11", "v-11-", "-v-11-" };
    for (String s : ss) {
        System.out.println(s + " => " + Arrays.toString(s.split(re)));
    }
}

出力:

-11 => [-11]
v-11 => [v, 11]
v- => [v-]
-2-11 => [-2-11]
v-11- => [v, 11-]
-v-11- => [-v, 11-]
于 2013-10-01T22:09:44.660 に答える