首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAVA RegEx on _ delimited字符串

JAVA RegEx on _ delimited字符串
EN

Stack Overflow用户
提问于 2012-08-26 11:08:49
回答 2查看 705关注 0票数 2

好的,我需要一个RegEx来捕获第一个单词到下划线字符,然后捕获下一个可能有下划线字符的单词。因此,这是一个组和预期的结果:

代码语言:javascript
复制
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"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-26 11:12:50

这不需要使用正则表达式,只需使用indexOfsubstring即可

代码语言:javascript
复制
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

使用正则表达式时,您必须使用以下代码,这会稍微复杂一些,也更难阅读:

代码语言:javascript
复制
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
}
票数 4
EN

Stack Overflow用户

发布于 2012-08-26 11:13:53

您可以沿_拆分,将拆分的数量限制为3:

代码语言:javascript
复制
assert Arrays.equals("gear_Armor_Blessed_Robes".split("_", 3),
    new String[] { "gear", "Armor", "Blessed_Robes" });

它将为您提供一个包含问题中指定的3个StringString[]

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12127328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档