2

OK、最初の単語をアンダースコア文字までトラップする正規表現が必要ですが、アンダースコア文字を含む可能性のある次の単語をキャプチャします。だから、ここにグループと期待される結果があります:

gear_Armor_Blessed_Robes = "gear", "Armor" and "Blessed_Robes"
gear_Armor_Chain_Coif = "gear", "Armor" and "Chain_Coif"
gear_Armor_Chain_Hauberk = "gear", "Armor" and "Chain_Hauberk"
gear_Armor_Chain_Shirt = "gear", "Armor" and "Chain_Shirt"
gear_Armor_Chain_Leggings = "gear", "Armor" and "Chain_Leggings"
4

2 に答える 2

4

これには正規表現を使用する必要はありません。単に and を使用indexOfしてsubstringください:

String s = "Armor_Blessed_Robes";
int idx = s.indexOf("_");
System.out.println(s.substring(0, idx)); // Armor
System.out.println(s.substring(idx + 1)); // Blessed_Robes

正規表現では、以下を使用する必要がありますが、これは少し複雑で読みにくいものです。

Pattern p = Pattern.compile("([^_]+)_(.+)");
Matcher m = p.matcher(s);
if (m.find()) {
  String first = m.group(1);  // Armor
  String second = m.group(2); // Blessed_Robes
}
于 2012-08-26T03:12:49.557 に答える
4

_分割数を 3 に制限して、に沿って分割できます。

assert Arrays.equals("gear_Armor_Blessed_Robes".split("_", 3),
    new String[] { "gear", "Armor", "Blessed_Robes" });

質問で指定されてString[]いる 3 を含むa が表示されるはずです。String

于 2012-08-26T03:13:53.177 に答える