在括号之间提取文本的模式

新手上路,请多包涵

如何使用模式匹配或任何方式从 "("")" 中提取字符串。例如,如果文本是

“你好(Java)”

那么如何只获得 "Java"

原文由 Rajeev Sahu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 366
2 个回答

尝试这个:

 String x = "Hello (Java)";
Matcher m = Pattern.compile("\\((.*?)\\)").matcher(x);
while (m.find()) {
    System.out.println(m.group(1));
}

或者

String str = "Hello (Java)";
String answer = str.substring(str.indexOf("(")+1, str.indexOf(")"));

原文由 Rahul Tripathi 发布,翻译遵循 CC BY-SA 4.0 许可协议

List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("\\((.*?)\\)");
Matcher regexMatcher = regex.matcher("Hello This is (Java) Not (.NET)");

while (regexMatcher.find()) {//Finds Matching Pattern in String
   matchList.add(regexMatcher.group(1));//Fetching Group from String
}

for(String str:matchList) {
   System.out.println(str);
}

输出

Java
.NET


\\((.+?)\\) 是什么意思?

这个正则表达式模式将从 \\( 开始,它将匹配 ( 因为它在 regExp 中保留,所以我们需要转义这个字符,同样的事情 \\) -d-d22 和 –f5549839291fb107027b-d-d22 和 (.*?) 将匹配任何字符零次或多次 () 被视为我们正在寻找的组。

原文由 akash 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题