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

我尝试将模式用于相同目的,但 $ 似乎代表 $ 而不是输入结束。

因为,您已经使用$inside[]作为 regex character class的成员。因此,它失去了作为行尾锚的意义,并开始逐字匹配。

另请注意,如果您尝试匹配以点结尾的句子;单独使用\w无济于事,因为它不覆盖空间。

于 2013-07-05T16:36:46.820 回答
3

$在字符类中使用时表示为文字..

您无法使用它来表示字符类中字符串/行的结尾。

像在第一个模式中一样使用它

于 2013-07-05T16:37:49.070 回答
0

“。” 是一个元字符,它将匹配除换行符以外的任何字符。

查看此链接了解详细信息(第 1.3 节)。

于 2013-07-05T16:57:11.750 回答