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

2022-09-01 04:02:53

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

“你好(Java)”

那么如何只得到?"Java"


答案 1

试试这个:

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(")"));

答案 2
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中保留的,所以我们需要转义这个字符,同样的事情,并且将匹配任何字符零或更多时间,此外,我们认为我们正在寻找的组。\\((\\)(.*?)()