JAVA RegEx在_分隔字符串上

时间:2012-08-26 03:08:49

标签: java regex

好的,我需要一个RegEx,它将第一个单词捕获到下划线字符,然后捕获可能具有下划线字符的下一个单词。所以,这是一个小组和预期的结果:

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"

2 个答案:

答案 0 :(得分:4)

没有必要使用正则表达式,只需使用indexOfsubstring

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
}

答案 1 :(得分:4)

您可以沿_分割,将分割数限制为3:

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

它应该为您提供String[],其中包含您问题中指定的3 String