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));
}
答案 0 :(得分:3)
我尝试使用模式用于相同目的,但$似乎代表$而不是输入结束。
因为您在$
内使用[]
作为正则表达式字符类的成员。因此,它失去了作为行尾锚点的含义,并开始逐字匹配。
另请注意,如果您尝试匹配以点结尾的句子;仅使用\w
无济于事,因为它不包括空格。
答案 1 :(得分:3)
$
在字符类中使用时表示为文字。
你无法用它来表示字符类中字符串/行的结尾。
在第一种模式中使用它在组中
答案 2 :(得分:0)
“”。是一个元字符,它将匹配除换行符之外的任何字符。
查看此link了解详情(第1.3节)。