1

出力は問題ありません。入力が「いい」もので、x/y の形式で、スペースがなく、整数値のみであると想定しています。

run:
272/273
matching group 1
272
273
matching group 2
BUILD SUCCESSFUL (total time: 0 seconds)

コード:

package stackoverflow;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.lang.System.out;

public class Ratio {

    private static String line = "272/273";

    public static void main(String[] args) {
        out.println(line);
        ratios(1);
        ratios(2);
    }

    private static void ratios(int numeratorDenominator) {
        out.println("matching group " + numeratorDenominator);
        Pattern pattern = Pattern.compile("(\\w+)");
        Matcher matcher;
        matcher = pattern.matcher(line);
        while (matcher.find()) {
            try {
                out.println(matcher.group(numeratorDenominator));
            } catch (IndexOutOfBoundsException obe) {
            }
        }
    }
}

しかし、それは完全に標準に達していません。分母を取得する別の、またはより良い方法はありますか? 私はあいまいな正規表現を探しているわけではありませんが、たとえば、行末に固定するには、最初の単語ではなく最後の単語を取得しますか?

私の目的では、数字も機能しますが、単語は問題なく機能します。/d だと思います。

4

3 に答える 3

3

入力が適切であると想定しているため、次のようになります。

String regex = "/(\\d+)$"

/一致は、文字列の末尾を意味する/
(\\d+)後に来る 1 つ以上の数字のキャプチャ グループです。/
$

于 2013-12-18T13:27:36.140 に答える