好的,我需要一个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"
答案 0 :(得分:4)
没有必要使用正则表达式,只需使用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
}
答案 1 :(得分:4)
您可以沿_
分割,将分割数限制为3:
assert Arrays.equals("gear_Armor_Blessed_Robes".split("_", 3),
new String[] { "gear", "Armor", "Blessed_Robes" });
它应该为您提供String[]
,其中包含您问题中指定的3 String
。