如何在[]集定义中使用$ character作为行尾字符?

时间:2013-07-05 16:34:29

标签: java regex

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));
    }

3 个答案:

答案 0 :(得分:3)

  

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

因为您在$内使用[]作为正则表达式字符类的成员。因此,它失去了作为行尾锚点的含义,并开始逐字匹配。

另请注意,如果您尝试匹配以点结尾的句子;仅使用\w无济于事,因为它不包括空格。

答案 1 :(得分:3)

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

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

在第一种模式中使用它在组中

答案 2 :(得分:0)

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

查看此link了解详情(第1.3节)。