0

正規表現:

"-[0-9]{0,}"

弦:

"-abc"

ここのテストによると、それは起こらないはずです。私は自分のコードで何か間違ったことをしていると思います。

コード:

public static void main(String[] args) {
    String s = "-abc";

    String regex = "-[0-9]{0,}";

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(s);
    while (matcher.find()) {
        if (matcher.group().length() == 0)
            break;

        // get the number less the dash
        int beginIndex = matcher.start();
        int endIndex = matcher.end();
        String number = s.substring(beginIndex + 1, endIndex);

        s = s.replaceFirst(regex, "negative " + number);
    }

    System.out.println(s);
}

いくつかのコンテキスト: 私が使用している音声合成プログラムは、先頭にマイナス記号がある数字を発音できないため、「マイナス」という単語に置き換える必要があります。

4

2 に答える 2

5
-[0-9]{0,}

-は、文字列に が必要であることを意味し0ますmore

数字の場合も同様-abcです0

指定しなかった^ and $ため、正規表現は一致foo-barするか、lll-0さらには一致abc-します

于 2013-03-29T09:41:27.610 に答える
2

{0,}と全く同じ意味*です。したがって、正規表現は「数字続くダッシュ」を意味します。-abcダッシュが含まれているため、パターンが見つかります。

-\d+ニーズにより適しているはずです ( java: のバックスラッシュをエスケープすることを忘れないでください-\\d+)。

文字列全体をパターンに一致させたい場合は、正規表現を^and $:で固定します^-\d+$

于 2013-03-29T09:41:46.233 に答える