好的,我需要一个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"发布于 2012-08-26 11:12:50
这不需要使用正则表达式,只需使用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-26 11:13:53
您可以沿_拆分,将拆分的数量限制为3:
assert Arrays.equals("gear_Armor_Blessed_Robes".split("_", 3),
new String[] { "gear", "Armor", "Blessed_Robes" });它将为您提供一个包含问题中指定的3个String的String[]。
https://stackoverflow.com/questions/12127328
复制相似问题