0

私はJavaにかなり慣れていません.RegExを使い始めたばかりで、入力としてテキストの壁が与えられた場合、特定の正規表現が見つかり、それが有効かどうかを確認する最良の方法はどれだろうと思っていました. 例を挙げます。

このテキスト ファイルを入力として取得しました。

Depity64_1 64 3 6 1

HerpDerp32 1 6 3 0 26

HurrDurr16 2 5 7 7 78

さて、私に関連する部分は HerpDerp32 です。テキスト ファイルに HerpDerp 文字列が含まれていることを確認したら、HerpDerp の後の数字 (この場合は 32) が 16、32、または 64 であることを確認します。

どうすればいいですか?間違っていたり、説明が不十分だったりしたら、申し訳ありません。

4

2 に答える 2

0

ここでは正規表現は必要ありません...

あなたがしなければならないのは、ファイルをループすることです(一度に1行を読み取ります)。

検索語で始まる行を見つけたら、その語の後の文字を調べるだけです。

String.substring()を使用して、HerpDerpの後の文字を検査できます。

Javaを使用する場合は、APIドキュメントを読むことに慣れている方がよいでしょう。

これが文字列関数のページです。あなたはこれをたくさん使うでしょう。

   http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

これがFileReaderクラスのドキュメントです。これもここで役立ちます。

于 2012-06-13T00:05:29.763 に答える
0

本当に正規表現を使用する必要がありますか? Jahroy はもっと速い方法を提案しました

String[] data = { "Derpity64_1 64 3 6 1", "HerpDerp32 1 6 3 0 26",
        "HurrDurr16 2 5 7 7 78" };

for(String s:data){//iterate over all Strings in 'data' array
    if (s.startsWith("HerpDerp"))//check if tested string starts with HerpDerp
        //HerpDerp32 1 6 3 0 26
        //        ^^
        //0123456789
        //show only chars from 8 till 9 index
        System.out.println(s.substring(8,10));//(10 is excluded)
}

編集:

元の質問に基づいているため、これが探しているものかどうかはわかりませんが、データと正規表現を使用して試してください。

String[] data = { "Derpity64_1 64 3 6 1", "HerpDerp32 1 6 3 0 26",
    "HurrDurr16 2 5 7 7 78" };
Pattern p=Pattern.compile("^HerpDerp(\\d*)");
for (String s : data) {
    Matcher m=p.matcher(s);
    if(m.find()) 
        System.out.println(m.group(1));
        //group(1) will return content from first bracket in regex
}
于 2012-06-13T00:25:44.133 に答える