0

次のコードがあります

Pattern p = Pattern.compile("^get.*\\(");
Matcher m = p.matcher("getFieldAsDouble(String)");
if (m.find()) {
  System.out.println(m.group());
}

戻るgetFieldAsDouble(

メソッドの代わりにテキスト名のみを取得するにはどうすればよいです(か??

4

5 に答える 5

4

.*useの代わりに[^(]*、そうでない任意の数の文字を取得します(

Pattern p = Pattern.compile("^get[^(]*");
于 2013-06-03T22:00:49.117 に答える
1

正規表現キャプチャ グループを使用できます

Pattern p = Pattern.compile("(^get.*)\\("); // The () creates a capture group
Matcher m = p.matcher("getFieldAsDouble(String)");
if (m.find()) {
  System.out.println(m.group(1)); //Group 1
}
于 2013-06-03T22:00:22.020 に答える
1

一致するものを括弧で囲む必要があります。完全な一致が返されるだけです

Pattern p = Pattern.compile("^(get.*)\\(");

次に、最初のアイテムが完全一致であるため、一致のコレクションの 2 番目のアイテムを要求する必要があります。

m.group(1)
于 2013-06-03T22:00:28.440 に答える
1

取得したいものを角かっこで囲み、そのグループを取得する必要があります。

Pattern p = Pattern.compile("^(get.*)\\(");
Matcher m = p.matcher("getFieldAsDouble(String)");

if (m.matches()) {
    System.out.println(m.group(1)); // Group 0 is the whole match
}
于 2013-06-03T22:01:22.023 に答える
1

これを 1 行で行う方法は次のとおりです。

String methodName = str.replaceAll("\\(.*", "");

ここにテストがあります:

System.out.println("getFieldAsDouble(String)".replaceAll("\\(.*", ""));

出力:

getFieldAsDouble
于 2013-06-03T22:01:37.143 に答える