0

次の文字列の最初の「から」の後の単語を抽出したい-

「ケミコン由来の抗CD24、サンタ由来の抗CD48」

現在、私は使用しています-

"from\s+([^\s]+)"

しかし、'Chemicon' だけでなく、'Chemicon' と 'Santa' の両方の結果が得られます。

4

2 に答える 2

1

多分あなたはこのようなことをすることができます:

    Pattern p = Pattern.compile("from\\s+([^\\s]+)");
    Matcher m = p.matcher("anti-CD24 from Chemicon, and anti-CD48 from Santa");
    if (m.find()) {
        System.out.println(m.group(1));
    }

これは最初のものだけを取ります。そして、この正規表現を使用して、最初の一致のコンマを避けることができます ( Chemicon,):from\\s+([a-zA-Z]+)

于 2012-06-30T11:17:58.130 に答える
0

lookingAtMethod オブジェクトでメソッドを使用できます。最初の一致が見つかった後、停止します。

関数と同様に、関数matchesとは異なり、最初から一致する必要があるため、正規表現を使用する必要があります。これは、最初の「from」までのすべてに一致し、次に1つ以上の空白文字、次に次の「単語」に一致します。「from」の後の単語にアルファベット文字のみを一致させたい場合は、 を使用します。先頭のは貪欲でないマッチングを意味します。使用するだけの場合、最初のものではなく、最後の「from」と一致します。findlookingAt".*?from\\s+(\\w+)"".*?from\\s+([a-zA-Z])"".*?"".*"

私がテストしたコードは次のとおりです。

  String s = "anti-CD24 from Chemicon, and anti-CD48 from Santa";
  Matcher m = Pattern.compile(".*?from\\s+(\\w+)").matcher(s);
  if (m.lookingAt()) {
    System.out.println(m.group(1));
  }

プリントアウト:

ケミコン
于 2012-06-30T12:58:54.083 に答える