1

pattern1私がしたいことをします。ドットで区切られたテキストを分割します。pattern同じ目的で使用しようとしました$が、入力の終わりではなく $ を表しているようです。それを機能させるための提案はありますか?

    String pattern1 = "(\\w+)(?:\\.|$)";
    String pattern = "(\\w+)[\\.$]";
    Pattern regex = Pattern.compile(pattern);
    Matcher matcher = regex.matcher("name.surname.value1.value");
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }
4

3 に答える 3

3

同じ目的でパターンを使用しようとしましたが、$ は入力の終わりではなく $ を表しているようです。

$内部[]を正規表現文字クラスのメンバーとして使用したためです。したがって、行末アンカーとしての意味を失い、文字どおりに一致し始めます。

また、ドットで終わる文を一致させようとしている場合は注意してください。\wスペースをカバーしないため、単独で使用しても役に立ちません。

于 2013-07-05T16:36:46.820 に答える
3

$文字クラスで使用される場合、リテラルとして表されます。

文字クラスで文字列/行の終わりを表すために使用する方法はありません。

最初のパターンで使用したように、グループで使用します

于 2013-07-05T16:37:49.070 に答える
0

「。」改行以外の任意の文字に一致するメタ文字です。

詳細については、このリンクを確認してください (セクション 1.3)。

于 2013-07-05T16:57:11.750 に答える