Java 从后面搜索时如何从字符串的一部分获取子字符串

Java 从后面搜索时如何从字符串的一部分获取子字符串,java,string,substring,Java,String,Substring,我有一个字符串,其中包含来自另一个JAVA类的代码,我正在提取文档注释。我有一个包含以下内容的字符串: "public static String[] scanread() throws Exception{" 我需要获取“scanread()”如何提取它?我希望它能找到“)”并继续从右向左阅读,直到它出现空白,然后将其提取出来。我不太确定我该怎么做。 同样,我担心“扫描”和“()”之间是否有一个空格可能不起作用 任何帮助都会很棒 谢谢将下面的正则表达式与Pattern和Matcher类一起使

我有一个字符串,其中包含来自另一个JAVA类的代码,我正在提取文档注释。我有一个包含以下内容的字符串:

"public static String[] scanread() throws Exception{"
我需要获取“scanread()”如何提取它?我希望它能找到“)”并继续从右向左阅读,直到它出现空白,然后将其提取出来。我不太确定我该怎么做。 同样,我担心“扫描”和“()”之间是否有一个空格可能不起作用

任何帮助都会很棒


谢谢

将下面的正则表达式与Pattern和Matcher类一起使用

"\\S+\\)"

\S+
匹配一个或多个非空格字符,因此这将匹配在(
括号之前存在的所有非空格字符,包括括号

输出:

scanread()

到目前为止,这似乎是可行的,但如果scanread和()之间有空格,它就不起作用了。有没有办法绕过这个问题?或者
“\\S+\\S*\\([^()]*\\)”
这帮了大忙!如果我可以这样问的话,让我们假设()参数中有随机的东西等等。有没有办法选择它,因为它可以有任意数量的空格或任意数量/类型的字符?例如:“scanread(字符串a,int z,字符串[]b)”
\\(([^)]*)\\)
使用此正则表达式并从组索引1获取所需的部分。
String s = "public static String[] scanread() throws Exception{";
Matcher m = Pattern.compile("\\S+\\)").matcher(s);
while(m.find()){
System.out.println(m.group());
}
scanread()