0

次の文字列「Class(102)(401)」と「Class(401)」があります。「Class(102)(401)」または「Class」から常に値「Class」を返すサブ文字列を見つけるために正規表現を検索したい(102)」

以下は私のコードです

Pattern MY_PATTERN = Pattern.compile(".^(\\(\\d+\\))");
    Matcher mat = MY_PATTERN.matcher("Class (102) (401)");
    while (mat.find()){
        System.out.println(mat.group());
    }
4

3 に答える 3

0

'Class'がStringに含まれているかどうかを知りたい場合は、String.contains( "Class")を使用してみませんか?

于 2012-05-05T16:48:54.913 に答える
0

それがどのように役立つかわかりませんが、必要な場合は、この正規表現を使用すると、「クラス」が最初に一致するグループに含まれます。

(Class)(?:\s*\(\d+\))+

同じパターンが続く他の単語をキャプチャする必要がある場合は、次を使用してください。

(.*?)(?:\s*\(\d+\))+

文字列'class'ではなく、後の数字である場合は、これを使用すると、一致するものもキャプチャグループに含まれます。

Class(?:\s*\(\(d+)\))+

バックスラッシュをエスケープする必要があります。読みやすくするために省略しました。

于 2012-05-05T16:55:15.823 に答える
0

String#replaceAllを使用して、次のように必要なものを取得できます。

String substr = str.replaceAll("^([\\S]+).*$", "$1");
于 2012-05-05T17:05:54.687 に答える